如何逃脱字符时读取JSON
我要写出这个JSON响应所有的变量:如何逃脱字符时读取JSON
"result": {
"\/common\/topic\/weblink": [
{
"url": "http:\/\/www.boardgamegeek.com\/boardgame\/13",
"description": "BoardGameGeek"
}
],
"id": "\/en\/settlers_of_catan"
}
所以拿到ID:
result.id
可是我怎么获取值为“\/common \/topic \/weblink”?
你想要的东西像
result["\/common\/topic\/weblink"][0].url
(我认为)
我以为也可能工作,但没有骰子。 – 2010-12-19 20:16:36
为了清楚起见,您的示例有一个错字。它应该是:result [“\/common \/topic \/weblink”] [0] .url – 2010-12-19 20:18:09
这最终是正确的答案。我将结果对象传递给一个html模板,由于某种原因我不清楚,我无法从JSON结果中访问键,但是在Python类中访问它们时没有问题。 – 2010-12-20 01:19:36
尝试
result.__getattribute__("\/common\/topic\/weblink")[0].url
TemplateSyntaxError:变量和属性不能以下划线开头:'result .__ getattribute__' – 2010-12-19 20:41:29
"\/common\/topic\/weblink"
解析字符串/common/topic/weblink
。任何访问解码内容的API都应使用生成的非转义数据;转义只是JSON编码的一部分。
这工作得很好,利用包含在Python标准的JSON模块,我强烈建议你使用,而不是第三方那些除非你有一个非常强有力的理由是不同的:
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"]
请注意,您在我添加的对象上省略了括号。
谢谢Glenn。在Python 2.5.5中作为Google App Engine的限制,我相信json是在2.6中引入的,让我试试吧 – 2010-12-19 20:48:57
如果它安装在较旧版本的Python中,它可能被称为“simplejson”(请注意,任何托管服务这在2010年仍然是2.5,显然没有被合理维护,因此不应该被认为是不平凡的。) – 2010-12-19 20:57:01
我觉得我很接近,我导入了simplejson,并且尝试了加载函数>>> >>> json_result = simplejson。加载(结果)但是我收到一个错误(TypeError:expect编辑字符串或缓冲区),因为结果对象不是字符串。 – 2010-12-19 21:05:11
您目前使用哪些库来处理json? – 2010-12-19 19:54:57
我正在使用Freebase-Python:http://code.google.com/p/freebase-python/ – 2010-12-19 20:19:47
根据Freebase-Python中提供的示例,这应该起作用 - result [“\/common \/topic \/weblink“] [”url“] - 但它会抛出错误, - TemplateSyntaxError:无法解析余数:[”\/common \/topic \/weblink“] [”url“] – 2010-12-19 20:22:53