2

次の JSON を Google の Gson で解析できません。

{"Name":
    {"object1":   
       {"field1":"17",
        "field2":"360",
        "field3":"19",
        "field4":"sun",
        "field5":"rain"
       }
    }
}

次のようにして field1 の値を取得しようとしましたが、うまくいきません

@SerializedName("Name/object1/field1")
public int fieldOne;

私は何を間違っていますか?

4

3 に答える 3

3

オブジェクトは、json 命令の階層を保持する必要があります。あなたの例では、次のようになります。

public class Object {

    @SerializedName("field1")
    public String fieldOne;

    @SerializedName("field2")
    public String fieldTwo;

    @SerializedName("field3")
    public String fieldThree;

    @SerializedName("field4")
    public String fieldFour;
}

public class Name {

    @SerializedName("object1")
    public Object obj;
}

public class GsonObj {

    @SerializedName("Name")
    public Name name;
}

次の呼び出しを使用します。

String json = "{\"Name\":{" +
            "\"object1\":{" +
            "\"field1\":\"17\",\"field2\":\"360\",\"field3\":\"19\",\"field4\":\"sun\",\"field5\":\"rain\"}}}";

Gson gson = new Gson();
GsonObj jsonResult = gson.fromJson(json, GsonObj.class);
Log.d("test", "field one: "+jsonResult.name.obj.fieldOne);
Log.d("test", "field two: "+jsonResult.name.obj.fieldTwo);
Log.d("test", "field three: "+jsonResult.name.obj.fieldThree);
Log.d("test", "field four: "+jsonResult.name.obj.fieldFour);
于 2012-08-20T00:49:22.777 に答える
1

無効な JSON があります。JSON は { または [ で始まる可能性があるため、別のペアの {} で文字列をラップする必要があります。

常に最初にデータを確認することをお勧めします。ここでよく使用します: http://jsonlint.com/

于 2012-08-19T19:40:55.680 に答える
0

階層なしでキー名を直接指定する必要がある「Name/object1/field」を持つことはできないと思います。GSON で動的 JSON フィールドを解析する方法を参照してください。

于 2012-08-19T19:47:53.230 に答える