0

次のようなjson文字列があります。

{
    "d": {
        "results": [
            {
                "__metadata": {
                    "uri": "http://localhost:2000",
                    "key_fields": "Accountnum",
                    "rows_affected": 0,
                    "last_autoinc": 0
                },
                "Accountnum": "9999999",
                "workphone": null,
                "name": "Smith",
                "address": "33 Main St",
                "city": "Anytown",
                "state": "FL",
                "zip": "33333",

            }
        ]
    }
}

ここでのスタックオーバーフローに関するさまざまな質問に従ってデシリアライズしようとしましたが、うまくいきません。これが私がクラスを作成したことです。accountnumとnameだけが必要です。

public class Result {
    @SerializedName("Accountnum")
    public String accountnumStr;

    @SerializedName("name")
    public String nameStr;    
}

json myresult の文字列があります。

Gson gson = new Gson();
Result result = gson.fromJson(myresult,Result.class);
myName.setText(result.nameStr);

空の文字列を受け取ります。ありがとう

4

2 に答える 2

1

作成しようとしている結果オブジェクトを保持するオブジェクトがあるため、結果クラスを内部クラスにしました。Resultクラスは次のようになります。

public class ResultParent {

    public class Result {
        @SerializedName("Accountnum")
        public String accountnumStr;

        @SerializedName("name")
        public String nameStr;    
    }
}
于 2012-06-15T04:39:58.657 に答える
0

JSON をクラス オブジェクトの観点から視覚化すると、まったく問題ありません。ルート オブジェクトに "D" 型の "d" という名前のプロパティが含まれているとします。また、タイプ「D」には、別のタイプ「結果」の「結果」のリストが含まれています。結果には、上記のプロパティが含まれます。これがその写真です:

class RootObj {
    D d;
}

class D {
    List<Result> results;
}

class Result {
    @SerializedName("Accountnum")
    public String accountnumStr;

    @SerializedName("name")
    public String nameStr; 
}

JSON からオブジェクトを取得するには、次のようにします。

Gson g = new Gson();    
RootObj ro = g.fromJson(jsonString, RootObj.class);
于 2012-06-15T05:23:47.420 に答える