Анализ записей данных JSON для определенных значений полей

#python #json #parsing

Вопрос:

В настоящее время я пытаюсь проанализировать следующий файл JSON с помощью его записей для следующих полей, но у меня возникли проблемы при попытке выполнить итерацию по файлу для этого. Может ли кто-нибудь помочь мне найти эффективный способ разобраться в этом?

 import requests
import json

jsonFile = open("/users/bboyf/Downloads/Aaron697_Brekke496_2fa15bc7-8866-461a-9000-f739e425860a.json", "r")
data = json.load(jsonFile)
jsonFile.close()

idValue = data['entry'][223]['resource']['medicationCodeableConcept']['coding'][0]['code']

print(idValue)

r = requests.get('https://rxnav.nlm.nih.gov/REST/interaction/list.json?rxcuis='  idValue)

print(r.text)
 

Более конкретно, я пытаюсь найти способ найти значения идентификаторов, если во многих записях, хранящихся в файле данных json, их несколько. Существует ли эффективный способ лучше получить эти значения, проанализировав файл или пройдя цикл for в записях?

 idValue = data['entry'][223]['resource']['medicationCodeableConcept']['coding'][0]['code']
 

Кроме того, как бы вы повторили данные, которые имеют следующую иерархию данных?
https://jsonblob.com/f92fabd6-db8b-11eb-bf92-87c0d3acf4df

Комментарии:

1. можете ли вы поделиться схемой JSON? обязательно посмотрите все, что вам нужно для цикла, и, пожалуйста, лучше объясните, что у вас есть, и ваши ожидаемые результаты в качестве примера. откуда и куда. 🙂 спасибо.

2. Да, вы можете получить доступ к файлу JSON здесь, который лучше предоставляет схему.

3. jsonblob.com/f92fabd6-db8b-11eb-bf92-87c0d3acf4df

4. Мой ожидаемый результат-вернуть поле кода, которое хранится в подполе «medicationCodeableConcept».

5. На самом деле нет ничего лучше, чем перебирать данные после анализа.

Ответ №1:

Пожалуйста, попробуйте это решение.

 import json

# conver string to JSON
f = open("./file.json",)

# returns JSON object as 
# dictionary
data = json.load(f)

# Iterate through the json
# list

for obj in data["entry"]:
    if "medicationCodeableConcept" in obj["resource"]:
        for codes in obj["resource"]["medicationCodeableConcept"]["coding"]:
            print("system: {} ncode: {} ndisplay: {}".format(codes['system'], codes['code'], codes['display']))

f.close()