다음과 같은 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");
그러나 가능한 경우 두 가지 방법으로 수행하는 방법을 알고 싶습니다.
답변
문제는 배열에 배치 된 JSON 객체 (귀하의 경우 각 ) 끝에있는 쉼표로 인해 발생합니다 .
{
"number": "...",
"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);
답변
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);
답변
