不知道如何在android中检索JSON数据(特别是这个)

时间:2014-06-18 23:45:51

标签: java android json

我一直在网上阅读和搜索,我仍然可以找到最好的(最简单的)方法来检索这个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);
        }

但我将块内的所有字段都视为一个巨大的字符串=( 拜托,有人可以给我一些提示吗?... 谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用返回对象的json_blocks.getString(key)而不是json_blocks.opt(key)。在这里,您可以检查返回的值是否为JSONObject的实例。如果是,请将其投射到它,并执行获取数据所需的额外获取调用。

Alternativley,您可以尝试json_blocks.optJSONObject(key)。如果返回一个值(非null),则转换为JSONObject并处理它,否则执行getString调用,如果这是你想要的。