Как я могу получить объект json, который находится внутри другого json? У меня есть URL, который возвращает объект json (сделанный в ruby), который содержит другой объект json в одном из значений, например:
json =
{"country":"canada",
"tours":"[
{\"title\":\"Canadian Rockies Trail\",\"price\":\"$2249\"},
{\"title\":\"2-Day Fantasy Island Getaway\",\"price\":\"$269\"}
]"}
Затем я хочу получить объект в элементе «Туры», который является еще одним JSON.
Я пытался json.load(json)['tours']
, который предоставляет мне данные в "турах", но в формате string , поэтому я не могу манипулировать данными. Есть ли какой-либо метод синтаксического анализа, чтобы получить это как Json вместо строки?
Я хотел бы получить данные следующим образом:
Canadian Rockies Trail ; price $2249
2-Day Fantasy Island Getaway; price $269
3 ответа
Проблема, которую я вижу здесь, состоит в том, что ваша json['tours']
строка в кодировке json. Вы должны использовать json.loads(str)
, чтобы превратить это в словарь. Я сделал бы это на месте и получил бы доступ.
См. Код ниже
import json
foo ={"country":"canada",
"tours":"[{\"title\":\"Canadian Rockies Trail\",\"price\":\"$2249\"},{\"title\":\"2-Day Fantasy Island Getaway\",\"price\":\"$269\"}]"}
foo['tours'] = json.loads(foo['tours']) # turn tours into dict
for tour in foo['tours']:
print "tour name : {} :::: tour price: {}".format(tour['title'],tour['price']) # tour is a dict now.
Вам не нужны все \ "в вашем JSON. Вы должны выглядеть как JSON.
j_dict = {"country": "canada",
"tours": [{"title":"Canadian Rockies Trail","price":"$2249"},{"title":"2-Day Fantasy Island Getaway","price":"$269"}]}
Тогда ваша программа должна выглядеть следующим образом. Сначала вам нужно преобразовать ваш словарь в строку json.
import json
j_string = json.dumps(j_dict)
foobar = json.loads(j_string)['tours']
Вы должны назвать ваш dict как-то иначе, чем json, потому что он будет конфликтовать с вашим импортом. Предполагая, что это называется json_dict,
json.loads(json_dict['tours'])
Должен сделать это
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.