JsonObject에서 일부 데이터를 추출하려고합니다. 문제는 json 내부에 들어오는 필드에 예측할 수없는 이름이 있다는 것입니다.
이 이상한 필드 이름을 가진 정보를 어떻게 추출 할 수 있습니까?
다음은 예입니다.
"myObject":{
"216cfa89a2de57554b36b177f0bfbb05":{
},
"0cf9182b5ceba2cb64174141a13e647d":{
},
"eb1d1b19e117ba1387a798d9194b4660":{
},
"157b52871e8e560c7ec0be111ef02363":{
},
"4db69dd3a8ae8e0089bd2959ab0c5f86":{
},
}
getAsJsonObject 메소드가있는 gson을 사용하고 있지만 필드 이름을 모르는 경우 어떻게 사용할 수 있습니까?
JsonObject jsonObject= myObjectJsonObject.getAsJsonObject("???");
또한 필드 수가 가변적 일 수 있으며 이것도 문제입니다. 왜 내가 jsonArray를 응답으로 얻지 못하는지 궁금합니다. 더 적합 할 것이고 그렇게 파싱 할 수있을 것입니다.
JsonObject.entrySet () 사용하십시오 .
String json = "{ 'abcd': { 'a':'d' }, 'dcba': { 'd':'a' } }";
JsonObject o = new JsonParser().parse(json).getAsJsonObject();
for(Map.Entry<String, JsonElement> entry : o.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
또는 객체를로드 할 때지도를 얻을 수 있습니다.
Map<String, JsonObject> map = new Gson().fromJson(json, new TypeToken<Map<String, JsonObject>>(){}.getType());
for(Map.Entry e : map.entrySet()) {
System.out.println(e.getKey());
System.out.println(e.getValue());
}
}
또는 JsonDeserializer 를 추가 하여 클래스를 합리적인 것으로 (아마도 맵) deserialize 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다