Не удается получить доступ к JSON, загруженному с помощью json.dumps (json.loads (вход)) - PullRequest
0 голосов
/ 16 мая 2018

Предположим, у меня есть данные JSON, как это.

{"id": {"$oid": "57dbv34346"}, "from": {"$oid": "57dbv34346sbgwe"}, "type": "int"}
{"id": {"$oid": "57dbv34345"}, "from": {"$oid": "57dbv34345sbgwe"}, "type": "int"}

Я написал такой скрипт на python

import json
with open('klinks_buildson.json', 'r') as f:
    for line in f:
        distros_dict = json.dumps(json.loads(line), sort_keys=True, indent=4)
        print distros_dict['from']
        print "\n"

Но это дает мне ошибку:

print distros_dict['from']
TypeError: string indices must be integers, not str

Я хочу получить данные из обеих строк.

1 Ответ

0 голосов
/ 16 мая 2018

Вам не нужно загружать строку, вы можете загрузить файл (при условии, что это действительный json); как это:

with open('klinks_buildjson.json', 'r') as f:
   data = json.load(f)

Теперь data - это список, где каждый элемент является объектом. Вы можете пройти через это:

for row in data:
   print(row['from'])

Чтобы устранить вашу непосредственную проблему, удалите json.dumps, который используется для преобразования объекта в s строку, что здесь не то, что вам нужно.

distros_dict = json.loads(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...