0

我正在寻找使用 GSon 库解析 json 的正确方法。到目前为止,我已经知道了两种方法:
假设我有一个这样的 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...],
 }
  1. 使用 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();
    
  2. 使用 Gson 映射到实体

    public class Container{
       List<Event> Events;
        List<Contact> Contacts;
    }
    
    Container c = new GSon().fromJSon(jsonString,Container.class);
    

你能告诉我什么时候应该使用第一种方式或第二种方式吗?
我有一个 Web 服务可以返回多种复杂的 json 字符串,我需要从中获取数据。我该怎么办?

4

1 回答 1

0

根据基准,第一种方法 ( GSON_DOM) 更快。这很可能是因为使用 DOM 方法您只是反序列化部分 JSON 字符串。如果您想要更高的性能,您可以切换到GSON_STREAM似乎在基准测试中表现最好的方法。

实际上,第二种方法使代码更简单。如果我发现 JSON 反序列化需要大量时间,我可能会先使用该方法,然后切换到其他方法之一。

于 2012-11-20T03:27:40.773 回答