Вот мой JSON:
"{\"question\": \"What artist released the hit song 'Hello' in 2015?\", \"answers\": [\"Taylor Swift\", \"Katy Perry\", \"$Adele\", \"Lady Gaga\"], \"topic\": \"Music in the 2010's\"}, {\"question\": \"Who is the featured artist on the song 'Despacito' by Luis Fonsi?\", \"answers\": [\"Enrique Iglesias\", \"Maluma\", \"$Justin Bieber\", \"Pitbull\"], \"topic\": \"Music in the 2010's\"}"
Затем я получаю ошибку Json: Незавершенная строка, начинающаяся с: строка 1, столбец 1 (символ 0)
Я просто выполняю json.loads() для этого json.
Я попытался удалить конечные запятые и убедиться, что использую двойные кавычки в именах свойств, как предложено здесь: https://www.geeksforgeeks.org/jsondecodeerror-expecting-property-name-enclosed-in-double-quotes-line- 1-столбец-2-символ-1/. Тогда я не смог пройти эту ошибку.
Я также попробовал передать строку https://jsonchecker.com/, и там написано, что это действительный json. Почему json.loads() не работает?
Пожалуйста, дайте нам минимальный пример кода. Мы не знаем, есть ли у вас именно эта строка или это строковый литерал для Python.
Являются ли символы в вашем сообщении (кавычка, фигурная скобка, обратная косая черта,...) фактическими символами строки (т. е. фактической переменной, если она напечатана), содержащей ваш JSON, или буквальными символами в исходном файле Python, которые образуют строку буквально?
Я получаю другую ошибку: Дополнительные данные: строка 1, столбец 165 (символ 164). Проблема во всем, что после \"Music in the 2010's\"}
. Я думаю, что это должен быть массив объектов, но в нем отсутствует окружение []
.
Данные json
представляют собой список из двух объектов json
, каждый из которых содержит 3 ключа «тема», «вопрос», «ответы».
Объекты должны быть заключены в квадратные скобки, чтобы модуль Python json
мог идентифицировать два объекта:
s = "[{\"question\": \"What artist released the hit song 'Hello' in 2015?\", \"answers\": [\"Taylor Swift\", \"Katy Perry\", \"$Adele\", \"Lady Gaga\"], \"topic\": \"Music in the 2010's\"}, {\"question\": \"Who is the featured artist on the song 'Despacito' by Luis Fonsi?\", \"answers\": [\"Enrique Iglesias\", \"Maluma\", \"$Justin Bieber\", \"Pitbull\"], \"topic\": \"Music in the 2010's\"}]"
симпатичная печать может помочь немного лучше заметить два объекта:
import json
from pprint import pprint
j = json.loads(s)
pprint(j)
[{'answers': ['Taylor Swift', 'Katy Perry', '$Adele', 'Lady Gaga'],
'question': "What artist released the hit song 'Hello' in 2015?",
'topic': "Music in the 2010's"},
{'answers': ['Enrique Iglesias', 'Maluma', '$Justin Bieber', 'Pitbull'],
'question': "Who is the featured artist on the song 'Despacito' by Luis "
'Fonsi?',
'topic': "Music in the 2010's"}]
При отсутствии информации о том, что вы сделали, чтобы получить текст, который вы показываете в этом первом блоке: это не JSON.