java - 如何从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"
}
现在有四次关键测试我想得到它的所有值。请建议我如何获得它的价值。
解决方案
希望下面的递归逻辑将有助于解析 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));
}
}
}
}
推荐阅读
- node.js - node.js 中的全局模块
- symfony - 具有 MEMBER OF 和空参数的 Doctrine querybuilder
- typescript - 打字稿在其键之一中从对象推断信息
- android-fragments - 如何将自定义侦听器从 Fragment 传递到 MVVM 中的 VM?
- python - 将大文件传递给 Celery 进行处理不起作用
- javascript - stripe.redirectToCheckout:您必须提供 lineItems、items 或 sessionId 之一
- winforms - 如何在 Rider ide 2020.1.2 中刷新 Winforms 自定义控件
- c - 如何改进 strspn 的实现
- intellij-idea - 在 PhpStorm/IntelliJ 中替换/封装文本的宏?
- javascript - 如何创建动态构造函数名称