Gson把一个数组对象变成json – Android

目前我正在使用webView前端处理本机android应用程序。

我有这样的东西:

public class dataObject { int a; String b; } 

在活动中,

我做了一个dataObject的数组,比如dataObject x [5];

现在我想在callback函数中将这5个dataObject作为JSON传递给我的javascript webView接口。

我通过互联网看,似乎大多数教程谈论如何从fromJson()转换。 对于toJson()没有太多的了解。 我发现一个教我dataObject.toJson() ,将工作。

但是,我怎样才能通过所有5个数据对象?

这里有一个关于如何使用Gson和对象列表的综合示例。 这应该certificate如何转换/从JSON,如何引用列表等

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; } } } 

编译它:

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

最后运行它:

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

请注意,如果您使用Windows,则必须切换: with ; 在前两个命令中。

运行后,您应该看到以下输出:

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

请记住,这只是一个命令行程序来演示它是如何工作的,但在Android环境中也适用相同的原则(引用jar库等)

我使用helper类的gson list反序列化版本:

 public List<E> getList(Class<E> type, JSONArray json) throws Exception { Gson gsonB = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); return gsonB.fromJson(json.toString(), new JsonListHelper<E>(type)); } public class JsonListHelper<T> implements ParameterizedType { private Class<?> wrapped; public JsonListHelper(Class<T> wrapped) { this.wrapped = wrapped; } public Type[] getActualTypeArguments() { return new Type[] {wrapped}; } public Type getRawType() { return List.class; } public Type getOwnerType() { return null; } } 

用法

 List<Object> objects = getList(Object.class, myJsonArray);