2014-10-08 166 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

相關問題