次のような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;
}
しかし、運がなかった。この方法を使用して他にどのようにこれを読むことができますか?
追伸:私はこれを使用してこれを動作させました:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
しかし、私は両方の方法で(可能な場合)それを行う方法を知りたいと思います。
問題は、each配列内のJSONオブジェクトの末尾のコンマ(各末尾の
"title": "..", //<- see that comma?
}
削除してデータを変更した場合
[
{
"number": "3",
"title": "hello_world"
}, {
"number": "2",
"title": "hello_world"
}
]
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);
は正常に動作するはずです。
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"
}
]
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);