2011-08-03 1 views
1

누군가가 Gson 파서로 나를 도울 수 있습니까? 변경 내용을 JSON 및 제거 할 때 잘 작동하지만 변경하면 JsonParseException이 발생합니다. 구문 분석에 실패했습니다.Gson 도움이 배열을 구문 분석 - 배열없이 작동하지만 배열을 사용하지 않습니다

Result[] response = gson.fromJson(fileData.toString(), Result[].class); 

나는 내가 뭘 잘못했는지

[ 
    { 
     "start_time": "8:00", 
     "end_time": "10:00", 
     "change": [ 
      { 
       "id": "1", 
       "name": "Sam" 
      }, 
      { 
       "id": "2", 
       "name": "John" 
      } 
     ] 
    }, 
    { 
     "start_time": "9:00", 
     "end_time": "15:00", 
     "change": [ 
      { 
       "id": "1", 
       "name": "Sam" 
      }, 
      { 
       "id": "2", 
       "name": "John" 
      } 
     ] 
    } 
] 

누군가가 말해 줄 수

등이

public class Result { 
    public String start_time; 
    public String end_time; 
    public change[] change; 
} 

public class change { 
    public String id; 
    public String name; 
} 

및 JSON 문자열과 같은 수업을? 배열과 함께 작동하지 않는 이유는 무엇입니까?

+0

스택 트레이스를 게시 할 수 있습니까? –

+2

목록을 대신 사용해보십시오. 목록 응답 = gson.fromJson (fileData.toString(), 리스트 .class), ' – jjnguy

+0

그러나 제네릭을 캡처하려면 토큰 유형을 사용해야합니다 유형. – jjnguy

답변

5

제안 된 것처럼 대신 목록을 사용해야합니다. Gson은 파서와 함께 매개 변수화 된 유형을 사용하는 데 대한 훌륭한 문서를 가지고 있습니다. 자세한 내용은 here을 참조하십시오. 코드가 다음과 같이 표시됩니다.

Type listType = new TypeToken<List<Result>>() {}.getType(); 
List<Result> results = gson.fromJson(reader, listType); 
for (Result r : results) { 
    System.out.println(r); 
} 
+0

시도했지만 동일한 오류가 발생했습니다. 그것은 배열 결과에 문제가되지 않습니다, json에서 임베디드 배열 변경되지 않을 때 작동합니다. 그러나 Json에있을 때는 작동하지 않습니다. 그 부분은 이해가 안됩니다. – Damir

+0

@Damir - 귀하의 문제를 잘 모릅니다. 위에 게시 한 내용을 기반으로 작동하는 테스트 케이스를 만들었으므로 작동하지 않는 코드 중 일부를 사용하여 질문을 확장 할 수 있습니다. – Perception

+0

은 내부에 여러 배열과 객체가있는 매우 복잡한 jsonArray에서 완벽하게 작동합니다. 고맙습니다. –

관련 문제