Как найти конкретный элемент в JSON без модели - PullRequest
0 голосов
/ 04 мая 2019

У меня есть такие данные 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.

Какиз приведенной выше структуры предположим, что я хочу получить все данные для тега «Brach Contact» для «North Brach», где «AllowExternal» имеет значение true.

Но я не хочу обрабатывать полный JSON и не хочусоздать объект модели для полной структуры JSON в моем коде.

Есть ли какой-нибудь способ, которым я могу сделать это с JAVA, любым внешним jar или чем-то еще?

Мой ожидаемый вывод - структура JSON для "Brach Contact"

"Brach Contact": [
    {
      "Primary Phone": "12345676890",
      "AllowExternal":true
    },
    {
      "Primary Email": "xyz@school.com",
      "AllowExternal":true
    }
  ]

Поскольку входной источник является внешним, существует вероятность того, что они могут изменить структуру JSON, поэтому я что-тоне зависит от структуры, а зависит от имени тега.Хотя это наш следующий приоритет.

Обратите внимание, что я использую Spring Boot с JAVA 8

Любая помощь в этом ...

1 Ответ

1 голос
/ 04 мая 2019

Вы можете взглянуть на JSONPath .

Я нашел хорошую вводную статью здесь: https://www.baeldung.com/guide-to-jayway-jsonpath.

Однако, если вы используете это, вам потребуетсяуказать полный путь к целевому элементу.Но это также разбирает весь JSON, без необходимости настраивать модели и т. Д.

Если вы не хотите анализировать JSON, я предлагаювы посмотрите на потоковые парсеры JSON .

Джексон имеет потоковый API: https://www.baeldung.com/jackson-streaming-api

...