首页 > 解决方案 > 如何从java中的嵌套json中获取值?

问题描述

我正在使用 spring boot 2.0.3 创建一个项目,其中我必须解析 json 并使用其键获取值。我的问题是我有一个在 json 中存在多个级别的键,我想获取它所有出现的值。例如下面是我正在使用的对象:-

{
  "test": {
    id:1,
    name:"test1",
    class:"test2"
  },
  "boolean": true,
  "color": "#82b92c",
  "null": null,
  "number": 123,
  "object_": {
    "a": "b",
    "c": "d",
    "e": "f",
    "test": {
       id:2,
       name:"test1",
       class:"test2"
    }
  },
  "object": {
    "object": {
       "test": {
          id:3,
          name:"test1",
          class:"test2"
        }
    },
    "test": {
        id:4,
        name:"test1",
        class:"test2"
    }
  },
  "string": "Hello World"
}

现在有四次关键测试我想得到它的所有值。请建议我如何获得它的价值。

标签: javajsonspring-boot

解决方案


希望下面的递归逻辑将有助于解析 Json。

public static void main(String[] args) {

    JacksonJsonParser parser= (JacksonJsonParser) JsonParserFactory.getJsonParser();
    Map jsonMap=parser.parseMap("{\"test\":{\"id\":1,\"name\":\"test1\",\"class\":\"test2\"},\"boolean\":true,\"color\":\"#82b92c\",\"null\":null,\"number\":123,\"object_\":{\"a\":\"b\",\"c\":\"d\",\"e\":\"f\",\"test\":{\"id\":2,\"name\":\"test1\",\"class\":\"test2\"}},\"object\":{\"object\":{\"test\":{\"id\":3,\"name\":\"test1\",\"class\":\"test2\"}},\"test\":{\"id\":4,\"name\":\"test1\",\"class\":\"test2\"}},\"string\":\"Hello World\"}");
    getTestDetails(jsonMap);
}

private static void getTestDetails(Map jsonMap) {
    for(Object key:jsonMap.keySet()){

        if("test".equals(key.toString())){
            System.out.println(jsonMap.get(key));
        }else{

            if(jsonMap.get(key) instanceof Map){
                getTestDetails((Map)jsonMap.get(key));
            }
        }


    }
}

推荐阅读