Java 如何在没有模型的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

我有一个像这样的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 ": "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解析器。我想你应该看看这个: