2014-10-08 132 views
6

请检查此代码示例。如何从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”。导致此信息在另一个响应中不同。

所以,我怎么能得到“objectString”不喜欢“EntryPointJsonResult”

+0

你不能。只有在数组中才允许提取没有对象名称的数据 – 2014-10-08 10:58:30

+0

YOu可以迭代数据并获取其中的所有值。 – 2014-10-08 11:00:45

回答

18

你可以得到这样的JSON对象的值特定密钥不知道关键

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

非常感谢。如果有一个元素,我会试试这个,并通知你 – Droid 2014-10-08 14:51:23

+0

,这个解决方案工作。但不适用于嵌套的json元素。 – Droid 2014-10-08 21:11:22

+0

你能分享你的JSON字符串吗? – Amy 2014-10-09 04:34:10

2

这应该工作。

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

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

+0

非常感谢。我会试试这个,并通知你。 – Droid 2014-10-08 14:53:24

+0

如果有一个元素,此解决方案工作。但没有为嵌套的json元素工作 – Droid 2014-10-08 21:17:49

+0

你能举个例子吗? – ToYonos 2014-10-08 21:21:10

相关问题