2

我正在尝试解析嵌套的 JSON,但我不知道 JSON 的格式...我想要 JSON 的所有键和值。

例子:

{
    "txnSpecificData1": "11",
    "txnSpecificData2": "21",
    "merchantData": {
        "merchantSpecificData1": "111",
        "merchantSpecificData2": "222",
        "merchantSpecificData3": {
            "data1": "1",
            "data2": "2"
        }
    }
}

现在我想要所有的键和它们的值...我试过 JSONParser 但它没有给出所有的键。请有人指导我这样做。

我需要基于键的值。假设我将键作为“merchantSpecificData2”,它应该返回我的值。

O/P 应该是包含所有键和值的 MAP:

OutPut Map : : : {txnSpecificData1=11, txnSpecificData1=22, merchantSpecificData1=111, merchantSpecificData2=222,data1=1,data2=2}
4

4 回答 4

3

将所有键和相应值存储到映射中的迭代解决方案。请注意,所有异常情况均未处理。

public static void main(String[] args) throws Exception{
    JSONObject jo = new JSONObject(your_json_String_here);
    Map<String, String> map = new HashMap<String, String>(); 
    new Test().iterateJson(jo, map);
    System.out.println(map);
}
public void iterateJson(JSONObject jo, Map map) {
    for(Object o : jo.keySet()){
        if(jo.get(o.toString()) instanceof JSONObject) 
            iterateJson(jo.getJSONObject(o.toString()), map);
        else
            map.put(o.toString(), jo.get(o.toString()));
    }
}
于 2015-10-29T06:22:21.863 回答
2

请参考这里

示例代码

public static void main(String[] args) throws JSONException {
        String json = "{\"txnSpecificData1\": \"11\",\"txnSpecificData2\": \"21\",\"merchantData\": {\"merchantSpecificData1\": \"111\",\"merchantSpecificData2\": \"222\",\"merchantSpecificData3\": {\"data1\": \"1\",\"data2\": \"2\"}}}";

        JSONObject jsonObject = new JSONObject(json);
        JSONObject merchantData = (JSONObject) jsonObject.get("merchantData");
        System.out.println(merchantData.get("merchantSpecificData2"));
    }

输出

222

马文

有关详细信息,请参阅 hew。

于 2015-10-29T06:06:58.633 回答
0

这是解决方案..

private static HashMap print(final JsonNode node) throws IOException {
        HashMap map = new HashMap();
        Iterator<Map.Entry<String, JsonNode>> fieldsIterator = node.getFields();

        while (fieldsIterator.hasNext()) {
            Map.Entry<String, JsonNode> field = fieldsIterator.next();
            final String key = field.getKey();

            final JsonNode value = field.getValue();
            if (value.isContainerNode()) {
                print(value);
            } else {
                map.put(key, value);
            }
        }
        return map;
    }
于 2015-10-30T04:21:30.457 回答
0

您可以使用http://json-lib.sourceforge.net/apidocs/net/sf/json/package-summary.html来解析 JSON。使用 JSONSerializer 您可以获得解析字符串的 JSONObject。然后 JSONObject 中可用的方法将为您提供所有键和值。值可以像 String/Long/Boolean 一样简单,也可以像另一个 JSONObject/JSONArray 一样复杂。

于 2015-10-29T06:01:55.207 回答