目前,我正在使用带有webView前端的本机android应用程序。
我有类似的东西:
public class dataObject { int a; String b; }
在活动中
我做了一个dataObject数组,比如dataObject x [5];
现在,我想将这5个dataObject作为JSON的回调函数传递给我的javascript webView接口。
我浏览了互联网,似乎大多数教程都在谈论如何转换fromJson()。没有太多关于toJson()。我找到了一个教会我的人dataObject.toJson(),可以工作。
fromJson()
toJson()
dataObject.toJson()
但是如何传递所有5个dataObject?
这是一个有关如何将Gson与对象列表一起使用的综合示例。这应该 确切 说明如何与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,你必须切换:与;前两个命令。
:
;
运行它之后,您应该看到以下输出:
[{"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库等)。