如何从没有特定名称的JSONObject获取String

时间:2014-10-08 10:49:16

标签: java android json jsonobject

请检查此代码示例。

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}               

这就是问题:我希望得到没有“EntryPointJsonResult”的“objectString”。导致此信息在另一个响应中有所不同。

那么如何在没有像“EntryPointJsonResult”这样的特定键的情况下获取“objectString”

2 个答案:

答案 0 :(得分:24)

您可以在不知道密钥

的情况下获取这样的json对象的值
Iterator<String> keys= object.keys();
while (keys.hasNext()) 
{
        String keyValue = (String)keys.next();
        String valueString = object.getString(keyValue);
}

答案 1 :(得分:3)

这应该有用。

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

但只有在您确定存在NextTransactionUrl节点时它才会起作用。顺便说一句,在这种情况下,这个节点可以有另一个名称,它仍然可以工作。