[英]Gson turn an array of data objects into json - Android
目前我正在使用webView前端的原生Android應用程序。
我有類似的東西:
public class dataObject
{
int a;
String b;
}
在活動中,
我已經創建了一個dataObject數組,比如dataObject x [5];
現在我想在回調函數中將這5個dataObject作為JSON傳遞給我的javascript webView接口。
我瀏覽了一下互聯網,似乎大多數教程都談到如何轉換fromJson()
。 關於toJson()
並沒有很多。 我找到了一個告訴我dataObject.toJson()
工作。
但是如何通過所有5個dataObjects?
這是一個關於如何將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,則必須切換:
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庫等)
我的使用幫助程序類的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.