1

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
            }
        }
    ]
}
2
  • 1
    first retrieve the data node (array) and then try retrieving the sum node on data[0] Commented Oct 22, 2020 at 17:47
  • Use JsonNode with JPointer. Like explained here. Commented Oct 22, 2020 at 17:51

1 Answer 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 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);
Sign up to request clarification or add additional context in comments.

7 Comments

Hi! Thank you for the very detailed explanation. But your code returned: JSONObject["amount"] not a string.
can you post your JSON data that you are using?
The one that you posted on the question is not valid json
Oh, I was stupid. The amount key has an int value, not a string. Thank you very much for your help. Hello from Russia.
Great. Can you post a valid json to the question for the future reference? Hello from Nepal
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.