英文:
JSONObject["sum"] not found while parsing JSON in Java
问题
{
"data": [
{
"txnId": 20071336083,
"personId": 1,
"date": "2020-10-21T20:10:56+03:00",
"errorCode": 0,
"error": null,
"status": "SUCCESS",
"type": "IN",
"statusText": "Success",
"trmTxnId": "403300256",
"account": "xxx",
"sum": {
"amount": 10,
"currency": 643
}
}
]
}
JSONObject json = new JSONObject(result);
JSONObject bpi = json.getJSONObject("data").getJSONObject(0).getJSONObject("sum");
String uuu = bpi.getString("amount");
System.out.println(uuu);
英文:
I have a problem. I wrote the JSON parsing code, but it gives me an error. I don't understand what the problem is. String result is JSON.I need to output the amount value from sum. Returns an error: "JSONObject["sum"] not found."
JSONObject json = new JSONObject(result);
JSONObject bpi = json.getJSONObject("sum");
String uuu = bpi.getString ("amount");
System.out.println(uuu);
{
"data": [
{
"txnId": 20071336083,
"personId": 1,
"date": "2020-10-21T20:10:56+03:00",
"errorCode": 0,
"error": null,
"status": "SUCCESS",
"type": "IN",
"statusText": "Success",
"trmTxnId": "403300256",
"account": "xxx",
"sum": {
"amount": 10,
"currency": 643
}
}
]
}
答案1
得分: 2
Your sum
element is deep below the structure. But your code is expecting it to be under the root object.
Your code is assuming the JSON is in the structure:
{
"sum": {
"amount": 10,
"currency": 643
}
}
But your JSON data is in the following structure:
{
"data": [
{
"account": "xxx",
"sum": {
"amount": 10,
"currency": 643
}
}
]
}
So, you need to read it properly:
JSONObject json = new JSONObject(result);
JSONArray data = json.getJSONArray("data");
JSONObject el = (JSONObject) data.get(0);
JSONObject sum = el.getJSONObject("sum");
String uuu = sum.getString("amount");
System.out.println(uuu);
英文:
Your sum
element is deep below the structure. But your code is expecting it to be under the root object.
Your code is assuming the json is in structure:
{
"sum": {
"amount": 10,
"currency": 643
}
}
But your json data is in following structure:
{ //ROOT JSONObject
"data": [ // JSONArray
{ //JSONObject - first element of array index 0
"account": "xxx",
"sum": { //JSONObject
"amount": 10, //value
"currency": 643
}
}
]
}
So, you need to read it properly:
JSONObject json = new JSONObject(result);
JSONArray data = json.getJSONArray("data");
JSONObject el = (JSONObject) data.get(0);
JSONObject sum = el.getJSONObject("sum");
String uuu = sum.getString("amount");
System.out.println(uuu);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论