Как избежать символов при чтении JSON - PullRequest
0 голосов
/ 19 декабря 2010

Мне нужно выписать все переменные в этом ответе JSON:

  "result": {
    "\/common\/topic\/weblink": [
      {
        "url": "http:\/\/www.boardgamegeek.com\/boardgame\/13", 
        "description": "BoardGameGeek"
      }
    ], 
    "id": "\/en\/settlers_of_catan"
  }

Итак, чтобы получить идентификатор:

result.id

Но как мне получить значения для "\ / common \ / topic \ / weblink"?

Ответы [ 3 ]

2 голосов
/ 19 декабря 2010

"\/common\/topic\/weblink" разрешается в строку /common/topic/weblink. Любой API, обращающийся к декодированному контенту, должен использовать полученные неэкранированные данные; побег является лишь частью кодировки JSON.

Это прекрасно работает, используя стандартный модуль JSON, включенный в Python, который я настоятельно рекомендую использовать вместо сторонних, если у вас нет очень веских причин отличаться:

import json

json_data = r"""
{
  "result": {
    "\/common\/topic\/weblink": [
      {
        "url": "http:\/\/www.boardgamegeek.com\/boardgame\/13",
        "description": "BoardGameGeek"
      }
    ],
    "id": "\/en\/settlers_of_catan"
  }
}"""

data = json.loads(json_data)
print data["result"]["/common/topic/weblink"]

Обратите внимание, что вы не включили в фигурные скобки объект, который я добавил.

0 голосов
/ 19 декабря 2010

Попробуйте

result.__getattribute__("\/common\/topic\/weblink")[0].url
0 голосов
/ 19 декабря 2010

Вы хотите что-то вроде

result["\/common\/topic\/weblink"][0].url

(мне кажется)

...