2014-07-15 3 views
0

json을 이해하려고하는 순간, 어떻게 작동하는지 알 수 있습니다. 하지만 개체 배열에 문제가 있습니다. 배열의 모든 객체이라는 값 (나는 그것이 이상하다는 것을 알고 있습니다. 내 코드가 아님)이 무엇입니까? 오브젝트도 무엇입니까? 이제 문제가되었습니다 : "value"라는이 개체는 항상 다른 키 - 값을 가지고 있습니다. 그래서 나는 지금 자바 객체 코드에 json 코드를 파싱 할 때마다 어떻게 달라지는지를 모른다. 여기배열의 JSON 객체가 다릅니다.

일부 예 :

배열

먼저 개체 :

"value": 
{ 
    "local": 
    [ 
    "English", "Deutsch", Espanol" 
    ], 
    "english": 
    [ 
    "English", "Deutsch", Espanol" 
    ], 
}, 

2 물체 (지금 캐릭터 오브젝트 생략) 배열의 다음의

"value" : "", 

3 목적 배열 :

"value" : {}, 

...

아마도 구문 분석을 잘못하고 있습니다. 먼저 json 코드 용 Java 클래스 bean을 작성한 다음 google 자동 파서를 사용하고 있습니다. (gson) 위 예제 중 하나만 json 코드 안에있을 때 작동합니다. (문자열을 객체로 변경하는 것과 같이 다를 수 없습니다.)

출력은 json 항목의 기본 클래스입니다.

내가 발견 한 어쩌면 내가 먼저 "ID"라는 값을 확인하고,에서 ... 내가 구문 분석하는 데 필요한 코드 그게

내가 올바른 변수와 다른 콩 클래스를 만들 수 있었다 구문 분석하는 동안 자바 객체에 당신은 어떻게합니까? 문제는 항상 "값"이라는 키입니다. 구글 파서 "GSON"을 사용하여 내 방법으로 실 거예요 작업, 내가 객체를 기다리고 있었다의 문자열하지만 ...

{ 
"status":"success", 
"data":{ 
"panel":{ 
"title":{ 
"label":{ "local":"Tote Selection", "english":"Tote Selection" }, 
"image":"public/img/pick.jpg", "type":"default" 
}, 
"isFirst":false, // currently not used 
"isLast":false, // currently not used 
"ownCount":0, // currently not used 
"panelsCount":0, // currently not used 
"elements":[ 
{ 
"type":"text", 
"id":"1", "value":{ "local":"Scan next order tote", 
"english":"Scan next order tote" }, 
"label":{ "local":"", "english":"" }, "color":"000000", 
"fontsize":18, "fontstyle":"flat", "alignment":"left", 
"rows":"undefined", "bgcolor":"", "isFocus":false 
}, 
{ 
"type":"text", 
"id":"4", "value":{ "local":"Scan tote: ", "english":"Scan tote: " }, 
"label":{ "local":"", "english":"" }, "color":"000000", "fontsize":20, 
"fontstyle":"strong", "alignment":"left", "rows":"undefined", 
"bgcolor":"", "isFocus":false 
}, 
{ 
"type":"input", 
"id":"6", "value":"", "label":{ "local":"", "english":"" }, 
"color":"000000", "fontsize":24, "fontstyle":"flat", "alignment":"left", 
"rows":"undefined", "isFocus":true 
}, 
{ 
"type":"button", 
"id":"1", "value":{ "local":"", "english":"" }, 
"label":{ "local":"Menu", "english":"Menu" }, "color":"000000", 
"fontsize":14, "fontstyle":"strong", "alignment":"left", 
"rows":"undefined", "isFocus":false 
}, 
{ 
"type":"button", 
"id":"4", "value":{ "local":"", "english":"" }, 
"label":{ "local":"Enter", "english":"Enter" }, "color":"000000", 
"fontsize":14, "fontstyle":"strong", "alignment":"right",18 
"rows":"undefined", "isFocus":false 
} 
] 
}, 
"authToken":"0fdd440a-619f-4936-ab74-d189accb5bd9", 
"routing":{ 
"controller":"panel", 
"action":"process", 
"workflowId":"singlepicking", 
"taskId":"orderSelection" 
} 
} 
} 

여러분의 도움에 감사드립니다 것을 예외를 얻고 있기 때문에!

+0

그래서 요구 사항은 JSON Array에서 값을 검색하는 것입니까 ?? 그렇다면 for 루프 만 사용하십시오. – Biplab

+0

예 배열과 객체, 문자열의 모든 값 .... –

+0

for 루프를 사용하면 무엇을 의미합니까? 나는 gson이 나를 위해 코드를 파싱한다면 그렇게 할 수 없다. –

답변

0

내가 통해 UR 질문 내가 잘 u는 문자열 처음에서 JSON을 받고 나는 경우 제대로 u는 그래서

for (int i = 0; i < JArray.length(); i++) { 
      print(JArray.getJSONObject(i).tostring()) 
     } 

아래와 같이 JSONArray의 값을 검색 할 수 있습니다 이해하면? 그래서 데이터 패널 획 라벨에있는 valueenglish를 얻을 수 JSONObject obj = new JSONObject(str);//str is the string that u are getting

으로 첫 번째 저장소 아래 된 JSONObject에서 문자열을보십시오 것은

String englishinLable=obj .getJSONObject("data").getJSONObject("panel").getJSONObject("title").getJSONObject("label").optString("english") 
+0

및 나머지는 작동하지 않을 것입니다. 배열뿐만 아니라 지금 게시 한 코드를 살펴보십시오. –

+0

그래서 내가 옳다면 String First에서 JSON을 얻고있다 ?? – Biplab

+0

예 thats right –

1

는 조금 다른 모습이지만, 당신의 대답은 나에게 도움이! Thx

 JsonParser parser = new JsonParser(); 
     JsonObject obj = parser.parse(br).getAsJsonObject(); 

     //now getting all the json values 
     String status = obj.get("status").getAsString(); 
     JsonObject data = obj.getAsJsonObject("data"); 

     String authToken = data.get("authToken").getAsString(); 
     JsonObject routing = data.getAsJsonObject("routing"); 
     String controller = routing.get("controller").getAsString(); 
     String action = routing.get("action").getAsString(); 
     String workflowId = routing.get("taskId").getAsString();