我有以下格式的JSON结果,JSON Lint将其显示为“有效响应”。
我的问题是:由于“ 141”,“ 8911”等都是动态值,我如何访问“ question_mark”的内容?
我的示例代码用于访问“产品”的价值。
//Consider I have the first <code>JSONObject</code> of the "search_result" array and //I access it's "product" value as below. String product = jsonObject.optString("product"); //where jsonObject is of type JSONObject. //<code>product<code> now contains "abc".
JSON:
{ "status": "OK", "search_result": [ { "product": "abc", "id": "1132", "question_mark": { "141": { "count": "141", "more_description": "this is abc", "seq": "2" }, "8911": { "count": "8911", "more_desc": "this is cup", "seq": "1" } }, "name": "some name", "description": "This is some product" }, { "product": "XYZ", "id": "1129", "question_mark": { "379": { "count": "379", "more_desc": "this is xyz", "seq": "5" }, "845": { "count": "845", "more_desc": "this is table", "seq": "6" }, "12383": { "count": "12383", "more_desc": "Jumbo", "seq": "4" }, "257258": { "count": "257258", "more_desc": "large", "seq": "1" } }, "name": "some other name", "description": "this is some other product" } ] }
我的问题标题“动态键”可能是错误的,但目前我不知道该问题的最佳名称是什么。
任何帮助将不胜感激!
使用JSONObject keys()获取密钥,然后迭代每个密钥以获取动态值。
代码大致如下所示:
// searchResult refers to the current element in the array "search_result" JSONObject questionMark = searchResult.getJSONObject("question_mark"); Iterator keys = questionMark.keys(); while(keys.hasNext()) { // loop to get the dynamic key String currentDynamicKey = (String)keys.next(); // get the value of the dynamic key JSONObject currentDynamicValue = questionMark.getJSONObject(currentDynamicKey); // do something here with the value... }