2014-01-27 2 views
0

I가 Java JSON를 사용하는 다음 코드 :자바 JSON 직렬화 오류

Widget w = new Widget(true, "LIVE"); 
WidgetService service = new WidgetServiceImpl(); // 3rd party JSON web service 

JSONObject response = service.postWidget(w); 

System.out.println("Response is: " + response.toString()); 
System.out.println("Now fetching orderid..."); 
System.out.println(response.getString("order_id")); 

에 대한 Widget 또는 WidgetService 걱정하지 마세요 :이 질문은 내가 자바 JSON API를 사용하고 어떻게 함께 할 수있다 (구체적를 JSONObject). 당신이 볼 수 있듯이

Response is: {"response":{"credits_used":"0.30","job_count":1,"order_id":"243050","currency":"USD"},"opstat":"ok"} 
Now fetching orderid... 
Exception in thread "main" org.json.JSONException: JSONObject["order_id"] not found. 
    at org.json.JSONObject.get(JSONObject.java:473) 
    at org.json.JSONObject.getString(JSONObject.java:654) 
    at com.me.myapp.MyDriver.main(MyDriver.java:49) 

는 응답에 돌아 오는 ORDER_ID 문자열 필드가, 그리고 "243050"의 값이 : 나는 위의 코드를 실행하면

, 내가 얻을. 그렇다면 예외가 발생하는 이유는 무엇입니까?

+0

를, 또 다른 객체 내에 – epoch

답변

2

JSONObject response은 외부 json 개체를 가리 킵니다.

응답 개체의 예상 개체가 들어있는 "response" (및 "opstat"btw.) 속성이 있습니다.

+0

감사 @Max Fichtelmann (+1) - 그래서 나는 무엇을해야합니까 그것을 고쳐야합니까? – AdjustingForInflation

+0

@Dstronczak과 마찬가지로 [JSONObject # getJSONObject (String)] (http://www.json.org/javadoc/org/json/JSONObject.html#getJSONObject (java.lang.String))에서 내부 응답 객체를 가져와야합니다. 고 밝혔다. –

0

당신은 이런 식으로 할 필요가 다음에 OrderID가 직접 응답 오브젝트에 연결되지

response.getJSONObject("response").getString("order_id");