0

GSon ライブラリを使用して json を解析する正しい方法を探しています。これまでのところ、これを行う 2 つの方法を知っています。次
のような 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);
    

いつ最初の方法と 2 番目の方法を使うべきか教えていただけますか?
多くの種類の複雑な json 文字列を返す Web サービスがあり、これからデータを取得する必要があります。私は何をすべきか?

4

1 に答える 1

0

ベンチマークによると、最初のアプローチ ( GSON_DOM) の方が高速です。これはおそらく、DOM アプローチでは JSON 文字列の一部のみを逆シリアル化しているためです。さらにパフォーマンスが必要な場合はGSON_STREAM、ベンチマークで最も優れていると思われるアプローチに切り替えることができます。

実際には、2 番目のアプローチの方がコードが単純になります。おそらく最初にそのアプローチを使用し、JSON の逆シリアル化にかなりの時間がかかっていることがわかった場合は、他の方法のいずれかに切り替えます。

于 2012-11-20T03:27:40.773 に答える