0

これについてわからないという問題があります。誰か助けてもらえますか:たとえば、jsonがあります:

    {
      "status":"0",
      "result": {
        "object1": {
          "name":"name1",
          "age":"21"
        },
        "object2": {
          "event":"new year",
          "date":"date"
        },
        "object1_1": {
          "name":"name2",
          "age":"22"
        },
        "object2_1": {
          "event":"birthday",
          "date":"date"
        }
      }
    }
4

2 に答える 2

1

jackson json を使用して、オブジェクトへの変換を試すことができます。 http://jackson.codehaus.org/

于 2012-08-24T10:14:02.730 に答える
0

このjsonをマップを含むオブジェクトに逆シリアル化する場合(およびマップにはリテラル値と他のマップが含まれます)。次のようなBeanがあると仮定します。

class MyBean {
    int status;
    Map<String, Object> result;
}

MyBean myBean = new Gson().fromJson(jsonString, MyBean.class);

変更なしで動作するはずです。ステータスのタイプが数値でない場合、値が引用されているjson文字列のように、Gsonが変換を行うかどうかわからないことに注意してください。同じことが、「age」プロパティにも当てはまります。

Gensonライブラリhttp://code.google.com/p/genson/もご覧ください。ほとんどのGson機能があり、他のライブラリにはない機能があり、パフォーマンスが向上しています。wikihttp://code.google.com/p/genson/wiki/GettingStartedをご覧ください

編集

名前は本当にobject1_1、object2_1などのようなものですか?構造を見ると、object1はobject2と非常に長い間関係していると思います。gsonを使用する場合は、カスタムTypeAdapterhttp: //google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/TypeAdapter.htmlを作成できます。

したがって、次のようなルートオブジェクトを作成できます

 class Response {
     int status;
     List<MyObject> result;
 }

 class MyObject {
     String name;
     int age;
     String event;
     String date;
 }

TypeAdapterのreadメソッドでは、キー(object1とobject2、object1_1とobject2_1 ...)に基づいてMyObjectのインスタンスを作成するか、同様のアプローチをとる必要があります。その方法の詳細が必要な場合は、Gsongoogleグループで質問することもできます。

于 2012-08-24T11:57:08.213 に答える