Java 如何在没有模型的JSON中查找特定元素
我有一个像这样的JSON数据Java 如何在没有模型的JSON中查找特定元素,java,json,jackson,jsonpath,jjaql,Java,Json,Jackson,Jsonpath,Jjaql,我有一个像这样的JSON数据 { { "School": "ABC School", "School Address": [ { "Office": "Road No 123" }, { "Admin Office": "Road No 321" }, { "Admission Office": "Road No 456" } ], "School Brach": [ { "Brach name": "North Brach", "Brach Id ": "0
{
{
"School": "ABC School",
"School Address": [
{
"Office": "Road No 123"
},
{
"Admin Office": "Road No 321"
},
{
"Admission Office": "Road No 456"
}
],
"School Brach": [
{
"Brach name": "North Brach",
"Brach Id ": "001",
"Brach Contact": [
{
"Primary Phone": "12345676890",
"AllowExternal":true
},
{
"Primary Email": "xyz@school.com"
"AllowExternal":true
},
{
"Primary fax": "0123456789",
"AllowExternal":false
}
]
},
{
"Brach name": "South Brach",
"Brach Id ": "002"
},
{
"Brach name": "West Brach",
"Brach Id ": "003"
},
{
"Brach name": "East Brach",
"Brach Id ": "004"
}
]
}
我从一个外部调用获取JSON,我必须为JSON中的某个元素处理该JSON
就像上面的结构一样,假设我想获得“北支路”的标签“支路接触”的所有数据,其中AllowExternal是真的
但我不想处理完整的JSON,也不想在代码中为完整的JSON结构创建模型对象
有什么方法可以用JAVA、任何外部jar或其他东西做到这一点吗
我期望的输出是Brach联系人的JSON结构
"Brach Contact": [
{
"Primary Phone": "12345676890",
"AllowExternal":true
},
{
"Primary Email": "xyz@school.com",
"AllowExternal":true
}
]
由于输入源是外部的,所以它们可能会更改JSON结构,所以我想知道一些独立于结构的东西,而不是依赖于标记名。尽管这是我们的下一个优先事项
请注意,我使用的是带有Java8的SpringBoot
任何关于这方面的帮助…您都可以查看JSONPath
我在这里找到了一篇很好的介绍文章:
但是,如果使用此选项,则需要输入目标元素的完整路径。但这也将解析整个JSON,而无需设置模型等
如果您不想解析JSON,那么我建议您看看JSON流解析器
Jackson有一个流API:我不想处理您必须处理的完整JSON,至少到您要查找的数据所在的位置为止。你可以在那一点短路,而不处理其余的。-。。。不想为完整的JSON结构创建模型对象。。。然后寻找一个流式JSON解析器。我想你应该看看这个: