3 回答
TA贡献1798条经验 获得超7个赞
假设你不明确需要使用Reader:基本上你的JSON包含一个Array或一个List的Map秒。如果您知道结果需要什么以及如何告诉Gson您要反序列化的内容,那么反序列化很容易。
下面两个例子:
@SuppressWarnings("unchecked")
List<Map<?, ?>> mapList = new Gson().fromJson(JSON, List.class);
以上将反序列化任何通用类型的地图并猜测值的类型。这会产生类似于ArrayList<Map<String, Object>值是Strings 或Doubles 的情况。
要明确地告诉Maps 泛型类型,可以这样做:
Type tMap = TypeToken.getParameterized(Map.class, String.class, String.class).getType();
Type tjson = TypeToken.getArray(tMap).getType();
Map<String, String>[] mapList = new Gson().fromJson(json, tjson);
TA贡献2011条经验 获得超2个赞
如前所述,Gson 是将 JSON 解析为纯 Java 对象的绝佳工具。
请参见下面的示例(用 Kotlin 编写):
data class Abc(val A: String, val B: String, val C: Int, val E: Int, val F: String)
fun parseAbcList(json: String): List<Abc> {
return Gson().fromJson<List<Abc>>(json, object : TypeToken<List<Abc>>() {}.type)
}
TA贡献1757条经验 获得超8个赞
以下是如何使用 Java 对象执行此操作的示例(就像我在评论中提到的那样):
class MyJsonObject {
public String A;
public String B;
public Integer C;
public Integer D;
public Integer E;
public String F;
}
// Serialization
Gson gson = new Gson();
List<MyJsonObject> myJsonObjects = gson.toJson(MyJsonObject[].class);
System.out.println(myJsonObjects[0].A); // xyz
这是使用 GSON 解析 JSON 的推荐方法。
添加回答
举报