Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gson turn an array of data objects into json - Android

Currently I am working on a native android app with webView front end.

I have something like:

public class dataObject {   int a;   String b; } 

and in activity,

I have made an array of dataObject, say dataObject x[5];

Now i want to pass these 5 dataObject to my javascript webView interface as JSON in a callback function.

I looked through the internet, seems like most tutorials talk about how to convert fromJson(). There are not a lot about toJson(). I found one that taught me that dataObject.toJson(), would work.

But how can I pass all 5 dataObjects?

like image 732
AbSoLution8 Avatar asked Feb 08 '12 01:02

AbSoLution8


People also ask

Can Gson convert list to JSON?

A Gson is a library that can be used to convert Java Objects to JSON representation.

What is JSON object in Android object class method function?

JsonObject class represents an immutable JSON object value (an unordered collection of zero or more name/value pairs). It also provides unmodifiable map view to the JSON object name/value mappings. A JsonObject instance can be created from an input source using JsonReader. readObject() .

How do you parse an array of objects in Java?

//Parsing the contents of the JSON file JSONObject jsonObject = (JSONObject) jsonParser. parse(new FileReader("E:/players_data. json")); Retrieve the value associated with a key using the get() method.

Is Gson better than JSON?

Conclusion: 2021 The obvious elephant in the room is that java and the json libraries got faster. Like way faster then back when the first benchmarks were run. It is also obvious that GSON stepped up big and won both benchmarks for Big and small files. In both cases very clearly.


1 Answers

Here's a comprehensive example on how to use Gson with a list of objects. This should demonstrate exactly how to convert to/from Json, how to reference lists, etc.

Test.java:

import com.google.gson.Gson; import java.util.List; import java.util.ArrayList; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type;   public class Test {    public static void main (String[] args) {      // Initialize a list of type DataObject     List<DataObject> objList = new ArrayList<DataObject>();     objList.add(new DataObject(0, "zero"));     objList.add(new DataObject(1, "one"));     objList.add(new DataObject(2, "two"));      // Convert the object to a JSON string     String json = new Gson().toJson(objList);     System.out.println(json);      // Now convert the JSON string back to your java object     Type type = new TypeToken<List<DataObject>>(){}.getType();     List<DataObject> inpList = new Gson().fromJson(json, type);     for (int i=0;i<inpList.size();i++) {       DataObject x = inpList.get(i);       System.out.println(x);     }    }     private static class DataObject {     private int a;     private String b;      public DataObject(int a, String b) {       this.a = a;       this.b = b;     }      public String toString() {       return "a = " +a+ ", b = " +b;     }   }  } 

To compile it:

javac -cp "gson-2.1.jar:." Test.java 

And finally to run it:

java -cp "gson-2.1.jar:." Test 

Note that if you're using Windows, you'll have to switch : with ; in the previous two commands.

After you run it, you should see the following output:

[{"a":0,"b":"zero"},{"a":1,"b":"one"},{"a":2,"b":"two"}] a = 0, b = zero a = 1, b = one a = 2, b = two 

Keep in mind that this is only a command line program to demonstrate how it works, but the same principles apply within the Android environment (referencing jar libs, etc.)

like image 169
Marvin Pinto Avatar answered Oct 05 '22 18:10

Marvin Pinto