2012-02-10 6 views
0

나는 내 PHP 파일에서받은 다음 JSON 배열을 구문 분석을 시도하고있다 :안드로이드 JSON/GSON의 직렬화

actionsArray = [[ "19.431", "19.438"], [[ "8", "(107) "], []], ["u1 ","u2 "]]

주로 배열 [["8 ","107 "], []]에 액세스하려고합니다. 그러나, 나는 오류 "com.google.gson.JsonParseException : 기대 배열하지만 발견 객체 이름 : 널 그램 : 널 (null) 0 작업 :

사용자 클래스가 포함되어 여기

널 내 코드에서 발췌입니다 : 문자열 이름,

( here 가능한 소스) ["first","second"]로 매소드로 .toString() 반환 당신은 당신의 JSON 필요

  JSONArray inputarray; 
      try { 
       int[] userActionsArray = new int[0]; 
       inputarray = new JSONArray(br.readLine()); 

       JSONArray gramsArray = (JSONArray)inputarray.get(0); 
       JSONArray actionsArray = (JSONArray)inputarray.get(1); 
       JSONArray namesArray = (JSONArray) inputarray.get(2); 

       User[] values = new User[namesArray.length()]; 

       Gson gson = new Gson(); 
       *User userAction = gson.fromJson(inputarray.toString(), User.class); 
       //error occurs on the above line* 
       ... 

답변

1

JSONArray이 org.json에서입니다 문자열 그램, [] 작업을 int로 봐라 같은 확인 : 당신이 배열을 분석하려고하지만 서비스가 개체로 응답 할 때

public User { 
String[] myArray; 
} 
+0

안녕하세요, 귀하의 회신에 감사드립니다. 이는 의미가 있지만 JSONArray가 {myArray : [ "first", "second"]} 지정된 형식을 따르는 적절한 방법이 무엇인지 모르겠습니다. 저를 올바른 방향으로 가르쳐 주시겠습니까? – user836200

+0

전체 JSON을 볼 수 있도록 루프를 생성하고 모든 행을 인쇄 할 수 있습니까? (그냥 br.readLine()을 반복하여 출력하십시오). 아니면 수동으로 JSON을 생성하고 있습니까? –

+0

ArrayList 객체를 사용한 후에 문제를 해결할 수있었습니다. 나는 gson을 포기하고 JSONArrays를 유지했다. PHP 파일에서 JSONArray를 검색했습니다. 도와 주셔서 감사합니다 (+1). – user836200

2

이 문제는 일반적으로 발생 : (귀하의 경우 User.class에서) 당신의 POJO는 다음과 같아야합니다 어디 GSON이 ... 구문 분석 할 { myArray : [ "first", "second" ] }. 먼저 응답을 테스트 한 다음 적절히 분석하십시오.

관련 문제