我正在寻找解析json使用GSon库的正确方法。到目前为止,我已经知道了两种方法: 假设我有一个像这样的json字符串:
{
'Events' : [{
'name' : 'exp',
'date' : '10-10-2010',
'tags' : ["tag 1", "tag2", "tag3"]
},...more events...],
'Contacts' : [{
'name' : 'John Smith',
'date' : '10-10-2010',
'tags' : ["tag 1", "tag2", "tag3"]
},...more contacts...],
}
使用JSonOjbect按名称获取字段:
JsonElement jelement = new JsonParser().parse(jsonLine);
JsonObject jobject = jelement.getAsJsonObject();
jobject = jobject.getAsJsonArray("Events");
JsonArray jarray = jobject.getAsJsonArray("Contacts");
jobject = jarray.get(0).getAsJsonObject();
使用GSon映射到实体
public class Container{
List<Event> Events;
List<Contact> Contacts;
}
Container c = new GSon().fromJSon(jsonString,Container.class);
你能告诉我何时应该使用第一种方式还是第二种方式? 我有一个Web服务可以返回多种复杂的json字符串,我需要从中获取数据。我该怎么办?
答案 0 :(得分:0)
根据benchmarks,第一种方法(GSON_DOM
)更快。这可能是因为使用DOM方法,您只是反序列化部分JSON字符串。如果你想要更高的性能,你可以切换到GSON_STREAM
方法,这似乎在基准测试中做得最好。
实际上,第二种方法可以实现更简单的代码。如果我发现JSON反序列化需要花费大量时间,我可能会首先使用该方法然后切换到其他方法之一。