我一直在网上阅读和搜索,我仍然可以找到最好的(最简单的)方法来检索这个JSON信息,如果你问我,它的结构非常凌乱,因为块的ID,也是您需要获取的数据... = /
{"blocks":
{"305795": {"is_mature": 1, "total_score": 1, "mining_duration": "1:39:26", "date_found": "2014-06-14 18:25:27", "confirmations": 1, "total_shares": 1, "date_started": "2014-06-14 16:46:01", "reward": "1", "nmc_reward": "0E-8"},
"305796": {"is_mature": 1, "total_score": 1, "mining_duration": "6:17:00", "date_found": "2014-06-15 11:29:32", "confirmations": 1, "total_shares": 1, "date_started": "2014-06-15 05:12:32", "reward": "1", "nmc_reward": "0E-8"}
}
我遇到的问题是,我需要将Block Number作为一个字段,就像我需要其他键一样......用行创建一个包含所有数据的基本表...
我有这台ATM。
JSONObject json_blocks = json.getJSONObject("blocks");
//Log.e("JSON Debug", "Number of Blocks: " + String.valueOf(json_blocks.length()));
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// looping through All Contacts
Iterator iter = json_blocks.keys();
while(iter.hasNext()){
String key = (String)iter.next();
String value = (String) json_blocks.getString(key);
System.out.println("Key: "+key+" Value: "+value);
map.put(key,value);
}
但我将块内的所有字段都视为一个巨大的字符串=( 拜托,有人可以给我一些提示吗?... 谢谢!
答案 0 :(得分:1)
您应该使用返回对象的json_blocks.getString(key)
而不是json_blocks.opt(key)
。在这里,您可以检查返回的值是否为JSONObject
的实例。如果是,请将其投射到它,并执行获取数据所需的额外获取调用。
Alternativley,您可以尝试json_blocks.optJSONObject(key)
。如果返回一个值(非null),则转换为JSONObject
并处理它,否则执行getString调用,如果这是你想要的。