Как получить значение пары ключей из файла json? - PullRequest
0 голосов
/ 07 апреля 2020

data = "[{" id ":" ab c, "content": "Bye", "child": [{"id": "dsd", "parent id": "ab c "," content ":" dds "}]}, {" id ": xcv," content ":" hello "}]"

   with open("data.json","w") as f:
        json.dump(data, f)

    # reads it back
    with open("data.json","r") as f:
        parsed_json = json.load(f)

    for e in parsed_json:
        print (e["content"])

Я хотел бы извлечь пока и привет, но я спотыкаюсь после этой ошибки. Интересно, как l oop через

TypeError                                 Traceback (most recent call last)
<ipython-input-2-1aa8088c77a7> in <module>
     46 
     47     for e in parsed_json:
---> 48         print (e["content"])
     49 
     50 

TypeError: string indices must be integer

1 Ответ

1 голос
/ 07 апреля 2020

Не используйте json.dump для записи строки в файл. Используйте его, чтобы записать структуру данных (список, словарь и т. Д. c.) В файл.

Поэтому не помещайте исходное значение переменной data в кавычки.

Кроме того, вам не хватает некоторых кавычек в данных (abc отсутствует закрывающая кавычка, а xcv отсутствует обе кавычки).

import json

data = [{"id":"abc", "content":"Bye", "child": [{"id":"dsd", "parent id":"abc", "content":"dds"}]}, 
        {"id":"xcv", "content":"hello"}]

with open("data.json","w") as f:
        json.dump(data, f)

# reads it back
with open("data.json","r") as f:
    parsed_json = json.load(f)

for e in parsed_json:
    print (e["content"])
...