115

次のような JSON ファイルがあります。

[
    {
        "number": "3",
        "title": "hello_world",
    }, {
        "number": "2",
        "title": "hello_world",
    }
]

ファイルにルート要素が含まれる前は、次を使用していました。

Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);

Wrapperコードですが、ルート要素が配列であるため、クラスをコーディングする方法がわかりません。

私は使用してみました:

Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);

と:

public class Wrapper{

    String number;
    String title;

}

しかし、運が良かったわけではありません。このメソッドを使用してこれを他にどのように読み取ることができますか?

PS私はこれを使用して動作させました:

JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");

しかし、両方の方法で(可能であれば)それを行う方法を知りたいです。

4

4 に答える 4

41
Gson gson = new Gson();
Wrapper[] arr = gson.fromJson(str, Wrapper[].class);

class Wrapper{
    int number;
    String title;       
}

うまくいくようです。しかし、文字列に余分な,コンマがあります。

[
    { 
        "number" : "3",
        "title" : "hello_world"
    },
    { 
        "number" : "2",
        "title" : "hello_world"
    }
]
于 2013-08-24T19:01:10.423 に答える
16
public static <T> List<T> toList(String json, Class<T> clazz) {
    if (null == json) {
        return null;
    }
    Gson gson = new Gson();
    return gson.fromJson(json, new TypeToken<T>(){}.getType());
}

サンプルコール:

List<Specifications> objects = GsonUtils.toList(products, Specifications.class);
于 2016-11-10T08:10:39.133 に答える