Не могу получить доступ к собственности json

Я пытаюсь получить доступ к свойству «город» этого json, но почему-то это не работает, это структура json:

"{\"ForSaleShopperPlatformFullRenderQuery{\\\"zpid\\\":28657235,\\\"platform\\\":\\\"DESKTOP_WEB\\\",\\\"formType\\\":\\\"OPAQUE\\\",\\\"contactFormRenderParameter\\\":{\\\"zpid\\\":28657235,\\\"platform\\\":\\\"desktop\\\",\\\"isDoubleScroll\\\":true},\\\"skipCFRD\\\":false,\\\"ompPlatform\\\":\\\"web\\\"}\":{\"property\":{\"listingDataSource\":\"Phoenix\",\"zpid\":28657235,\"city\":\"Boerne\",\"state\":\"TX\",\"homeStatus\":\"FOR_SALE\",\"address\":{\"streetAddress\":\"111 stone creek\",\"city\":\"Boerne\",\"state\":\"TX\",\"zipcode\":\"78006\",\"neighborhood\":null,\"community\":null,\"subdivision\":null},\"isListingClaimedByCurrentSignedInUser\":false,\"isCurrentSignedInAgentResponsible\":false,\"bedrooms\":3,\"bathrooms\":2,\"price\":345000,\"yearBuilt\":1999,\"streetAddress\":\"111 stone creek\",\"zipcode\":\"78006\",\"isCurrentSignedInUserVerifiedOwner\":false,\"propertyUpdatePageLink\":null,\"moveHomeMapLocationLink\":null,\"propertyEventLogLink\":null,\"editPropertyHistorylink\":null,\"collections\":{\"modules\":[{\"name\":\"Similar homes\",\"placement\":\"NEIGHBORHOOD\",\"propertyDetails\":[{\"miniCardPhotos\":[{\"url\":\"https://photos.zillowstatic.com/fp/219307696092bb2d5e31698cba1c1e1f-p_c.jpg\"}],\"price\":315000,\"currency\":\"USD\",\"bedrooms\":3,\"bathrooms\":3,\"livingArea\":1729,\"livingAreaValue\":1729,\"livingAreaUnits\":\"Square Feet\",\"livingAreaUnitsShort\":\"sqft\",\"listingMetadata\":{\"comminglingCategoryIsRulesApplicable\":true},\"lotSize\":2874,\"lotAreaValue\":2874.96,\"lotAreaUnits\":\"Square Feet\",\"address\":{\"streetAddress\":\"130 Hampton Bend\",\"city\":\"Boerne\",

{
    "ForSaleShopperPlatformFullRenderQuery{\"zpid\":28657235,\"platform\":\"DESKTOP_WEB\",\"formType\":\"OPAQUE\",\"contactFormRenderParameter\":{\"zpid\":28657235,\"platform\":\"desktop\",\"isDoubleScroll\":true},\"skipCFRD\":false,\"ompPlatform\":\"web\"}": {
        "property": {
            "listingDataSource": "Phoenix",
            "zpid": 28657235,
            "city": "Boerne",
            "state": "TX",
            "homeStatus": "FOR_SALE",
            "address": {
                "streetAddress": "111 stone creek",
                "city": "Boerne",
                "state": "TX",
                "zipcode": "78006",
                "neighborhood": null,
                "community": null,
                "subdivision": null
            },

это код:

key = 'ForSaleShopperPlatformFullRenderQuery{"zpid":28657235,"platform":"DESKTOP_WEB","formType":"OPAQUE","contactFormRenderParameter":{"zpid":28657235,"platform":"desktop","isDoubleScroll":true},"skipCFRD":false,"ompPlatform":"web"}'
        city = data["props"]["pageProps"]["componentProps"]["gdpClientCache"][key]['property']['city']

я получаю ошибку:

print(data["props"]["pageProps"]["componentProps"]["gdpClientCache"]['ForSaleShopperPlatformFullRenderQuery{\\"zpid\":28657235,\\"platform\\":\\"DESKTOP_WEB\\",\\"formType\\":\\"OPAQUE\\",\\"contactFormRenderParameter\\":{\\"zpid\\":28657235,\\"platform\\":\\"desktop\\",\\"isDoubleScroll\\":true},\\"skipCFRD\\":false,\\"ompPlatform\\":\\"web\\"}'])
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: string indices must be integers, not 'str'

попробовал также

key = "ForSaleShopperPlatformFullRenderQuery{\"zpid\":28657235,\"platform\":\"DESKTOP_WEB\",\"formType\":\"OPAQUE\",\"contactFormRenderParameter\":{\"zpid\":28657235,\"platform\":\"desktop\",\"isDoubleScroll\":true},\"skipCFRD\":false,\"ompPlatform\":\"web\"}"

все еще не работает

Создайте минимальный воспроизводимый пример и предоставьте полную информацию об ошибках и действительный JSON. Этот фрагмент JSON не показывает полный путь, к которому вы обращаетесь.

Mark Tolonen 26.07.2024 03:17

Ваши две версии ключа эквивалентны, и ошибка указывает на то, что вы индексируете строку. Поскольку есть дополнительные ключи, которые вы не показали, отредактируйте вопрос, чтобы получить точный образец и код, который можно скопировать и запустить для воспроизведения проблемы.

Mark Tolonen 26.07.2024 03:25

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

Saad Ouled Lafqui 26.07.2024 03:26

Вам не нужно публиковать все данные, выполнять некоторую отладку и вырезать все данные, кроме ключей, к которым вы обращаетесь, чтобы воспроизвести сбой, и опубликовать этот небольшой пример. Скорее всего, вы поймете это, если просто выполните эти шаги.

Mark Tolonen 26.07.2024 05:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, ваш пример json не является полным, поскольку я не вижу этих ключей.

["props"]["pageProps"]["comComponentProps"]["gdpClientCache"]

Итак, я попробовал data[key]['property']['city'], и это работает.

Я думаю проблема в этой клавише gdpClientCache. Должно быть, он вернул строковое значение, а не тот пример json, который вы нам показали. Вот почему программа хочет, чтобы вы использовали целое число в качестве индекса.

Дважды проверьте возвращаемое значение каждого ключа, и вы сможете решить проблему.

да, он вернул строку, но я до сих пор не знаю, что делать, чтобы этот город оказался в такой ситуации

Saad Ouled Lafqui 26.07.2024 03:47

Ничего, я понял, что нужно сделать, и решил эту проблему, большое спасибо за помощь.

Saad Ouled Lafqui 26.07.2024 03:53

Вы должны убедиться, что data["props"]["pageProps"]["comComponentProps"]["gdpClientCache‌​"] возвращает правильное значение json(dict).

happy_code_egg 26.07.2024 03:55

Без проблем. :-)

happy_code_egg 26.07.2024 03:56

Другие вопросы по теме