2014-01-28 4 views
0

아래 버전의 웹 서비스에서 JSON 문자열을 가져옵니다. 표시되는 ID에 대한 JSON 문자열 필드는 get에서 보낸 내용에 따라 임의적입니다. 나는 json을 가지고 임의의 필드 값을 다루는 객체로 실행하는 gson에 대해 몇 가지 예제를 따라왔다. How to decode JSON with unknown field using Gson?Dealing with randomly generated and inconsistent JSON field/key names using GSONGSON 2.0+ - 임의의 필드를 비 직렬화 및 구문 분석

내 질문은 특정 필드를 꺼내기 위해 개체를 만들면 어떻게해야합니까? 개체 (ID, 이름, 프로필) 등의 내부에서 값을 가져 오는 사용자 지정 클래스가 있지만 두 개를 참조 할 수있는 방법이 손실되었거나 개체에서 정보를 추출하는 방법이 잘못되었습니다. arraylist 또는 일종의 뭔가.

{ 
    "415943": { 
     "id": 415943, 
     "name": "Zoro Roronoa", 
     "profileIconId": 580, 
     "revisionDate": 1390848107000, 
     "summonerLevel": 30 
    }, 
    "19758386": { 
     "id": 19758386, 
     "name": "Zoro", 
     "profileIconId": 535, 
     "revisionDate": 1390855130000, 
     "summonerLevel": 30 
    } 
} 

Main.java

Gson gson = new Gson(); 
Object o = gson.fromJson(jsonStatsString, Object.class); 

답변

0

당신은 JSON에서 매핑 된 필드를 포함 사용자 정의 개체를 사용하고, 그들이 당신을 위해 목록으로 전환 할 수 있습니다 :

List<MyObject> items = 
       gson.fromJson(json, new TypeToken<List<MyObject>>() { }.getType()); 
+0

내가 계속 오류가 발생했습니다. "BEGIN_ARRAY가 예상되지만 BEGIN_OBJECT가 1 행 2 열의 열" " – Razgriz231

+0

이었습니다. JSON은 배열이 아니라 여러 객체가 포함 된 객체로 보입니다. 난 그냥 반환 된 문자열을 데리고 바깥 쪽 {}를 []로 바꿔서 배열로 만들 것입니다. 그렇다면 그것이 작동합니다. – brwngrldev

+0

목록 개체를 사용하지 않고 끝났지 만 답변의 'TypeToken'부분은 내가 찾고있는 부분입니다. – Razgriz231