How to get String from JSONObject without Specific

2019-03-20 13:58发布

问题:

Please check this code sample.

HttpEntity getResponseEntity = getResponse.getEntity();

String message = EntityUtils.toString(getResponseEntity,"UTF-8");

//message = {"EntryPointJsonResult":"{\"NextTransactionUrl\":null,\"TraceId\":null,\"IsAuthorizationRequired\":false,\"IsError\":false,\"ErrorCode\":null,\"ErrorMessage\":null}"}

JSONObject object = new JSONObject(message);
String objectString = object.getString("EntryPointJsonResult"); 
//objectString = {\"NextTransactionUrl\":null,\"TraceId\":null,\"IsAuthorizationRequired\":false,\"IsError\":false,\"ErrorCode\":null,\"ErrorMessage\":null}               

That's the question : I want to get the "objectString" without "EntryPointJsonResult". Cause this information is different at the another response.

So how can I get the "objectString" without specific key like "EntryPointJsonResult"

回答1:

You can get values of json object like this without knowing key

Iterator<String> keys= object.keys();
while (keys.hasNext()) 
{
        String keyValue = (String)keys.next();
        String valueString = object.getString(keyValue);
}


回答2:

This should work.

JSONObject object = new JSONObject(message);
String objectString = object.getString(object.names().get(0)); 

But it will only work if you sure that NextTransactionUrl node exists. By the way, in this case, this node could have another name, it will still work.