简体   繁体   中英

Java JSON Deserialization Error

I have the following code that uses Java 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"));

Don't worry about Widget or WidgetService : this question has to do with how I'm using the Java JSON API (and specifically JSONObject ).

When I run the above code, I get:

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)

As you can see, there is an order_id String field coming back in the response, and it has a value of "243050". So why am I getting the exception?

Your JSONObject response points to the outer json object.

I am pretty sure, your response object has a property "response" (and "opstat" btw.) containing your expected object.

你必须这样做:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM