读取json文件并解析java中的内部json数组

时间:2014-11-29 09:57:42

标签: java json arrays

{
"vers": 0.01,
"config": {
    "rate": "perhr",
    "valueColumns": [
        "vCPU",
        "ECU",
        "memoryGiB",
        "storageGB",
        "linux"
    ],
    "currencies": [
        "USD"
    ],
    "regions": [
        {
            "region": "us-east",
            "instanceTypes": [
                {
                    "type": "generalCurrentGen",
                    "sizes": [
                        {
                            "size": "t2.micro",
                            "vCPU": "1",
                            "ECU": "variable",
                            "memoryGiB": "1",
                            "storageGB": "ebsonly",
                            "valueColumns": [
                                {
                                    "name": "linux",
                                    "prices": {
                                        "USD": "0.013"
                                    }
                                }
                            ]
                        },
                        {
                            "size": "t2.small",
                            "vCPU": "1",
                            "ECU": "variable",
                            "memoryGiB": "2",
                            "storageGB": "ebsonly",
                            "valueColumns": [
                                {
                                    "name": "linux",
                                    "prices": {
                                        "USD": "0.026"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}
}

嗨,我想读这个json文件。我尝试了各种方式从谷歌,但在valuesColumns得到一个空。我必须阅读sizes数组并且必须列入清单。

2 个答案:

答案 0 :(得分:1)

我认为如果你格式化你的json,它将有助于你的事业。因为它很难阅读。谷歌搜索JSON美化师很快就找到了我this one

使用JSON时,您的浏览器控制台为检查和播放数据提供了一个很好的环境。我将它粘贴到浏览器控制台并执行(在每行后按Enter键):

var x = { ... paste JSON here ... } 
x
x.config
x.config.valueColumns

这告诉我x是JSON对象,config是JSON对象,valueColumns是JSON数组

现在到了java。抓住自己的json库,访问valueColumns将是这样的:

JSONObject x = new JSONObject("{ ... JSON string ... }");
JSONObject config = x.getJSONObject("config");
JSONArray valueColumns = config.getJSONArray("valueColumns");

然后,您可以迭代valueColumns并提取您需要的内容。

请注意,上述内容仅允许您访问valueColumns下的第一个config数组。通过遵循相同的原则,您可以深入了解结构,并获取valueColumns数组中sizes对象的{{1}},如果这是您真正追求的目标。

答案 1 :(得分:0)

为了将json解析为java,有一个简单的步骤。 下面的代码段可能会对您有所帮助。

// parse json to java
Object obj = parser.parse(s);
        JSONObject json = (JSONObject) obj;

        JSONObject o = (JSONObject) json.get("config");
        //get json array.
        JSONArray array = (JSONArray) o.get("valueColumns");
        System.out.println(array.toJSONString());
        //access element by index 
        System.out.println(array.get(0));