Как мне пройти через JSON с помощью анализатора пути JSON?

#json #jsonpath

#json #jsonpath

Вопрос:

У меня есть следующий ответ JSON

  '{ "person_list":
 [

  {
"id": "4",
"demographics": {
  "address": {
    "city": "Tokyo",
    "country": "Japan",
    "county_or_parish": "some county",
    "postal_code": "98765",
    "state_or_province": "some state",
    "street_addresses": [
      "123 Some Street"
    ]
  },
  "date_of_birth": "1964-01-30T00:00:00.000Z",
  "date_of_death": "2013-01-30T00:00:00.000Z",
  "deceased": true,
  "emails": [],
  "gender": "Male",
  "full_name": "Yagami Light M",
  "given_names": [
    "Light",
    "Maes"
  ],
  "family_names": [
    "Yagami",
    "Hughes"
  ],
  "prefix": "Dr.",
  "suffix": "Jr.",
  "telecoms": [],
  "mrn_aliases": [],
  "payer_info": [],
  "person_benefit_coverages": []
},
"mara_risk_scores": [
  {
    "score": 10.0,
    "model": "CXCONLAG0"
  },
  {
    "score": 20.0,
    "model": "CXCONLAG1"
  },
  {
    "score": 30.0,
    "model": "CXCONLAG2"
  }
    ],
   "dashboard": {},
   "has_flagged_manual_data": true,
   "record_ids": []
 },
  {
  "id": "3",
  "demographics": {
  "emails": [],
  "given_names": [],
  "family_names": [],
  "telecoms": [],
  "mrn_aliases": [],
  "payer_info": [],
  "person_benefit_coverages": []
  },
  "mara_risk_scores": [],
   "dashboard": {},
   "has_flagged_manual_data": false,
  "record_ids": []
    }
   ]
  }'
  

Теперь я хочу получить демографические данные идентификаторов, которые равны empi_id, которые я извлек из другого объекта..

Я попробовал это.. JSONPath.read(JSONObject,»$.person_list[].demographics», filter(где(«id»).eq(cs.getEmpiId())))

Похоже, это не работает .. не могли бы вы, пожалуйста, помочь мне с этим?

Ответ №1:

Это выражение JSONPath должно помочь вам получить то, что вам нужно:

 $.person_list[?(@.id=='4')].demographics
  

Замените 4 идентификатором интересующего вас человека, и это должно сработать.