python - JSON在Python中解析元素内的元素
问题描述
我从网站的 API 中获取了一个 JSON 文本:
{"result":"true","product":{"made":{"Taiwan":"Taipei","HongKong":"KongStore","Area":"Asia"}}}
我想占领“台湾”和“台北”却总是失败。
这是我的代码:
import json
weather = urllib2.urlopen('url')
wjson = weather.read()
wjdata = json.loads(wjson)
print wjdata['product']['made'][0]['Taiwan']
我总是收到以下错误:关键字 0 错误
解析该json的正确方法是什么?
解决方案
您正在索引一个没有的数组。JSON如下:
{
"result":"true",
"product": {
"made": {
"Taiwan":"Taipei",
"HongKong":"KongStore",
"Area":"Asia"
}
}
}
以上不包含数组。
您假设 JSON 结构是这样的:
{
"result":"true",
"product": {
"made": [
{"Taiwan":"Taipei"},
{"HongKong":"KongStore"},
{"Area":"Asia"}
]
}
}
通过简要查看 json 包的文档页面,我发现了这个转换表:使用 json.loads的转换表
它告诉我们 JSON 对象转换为 dict。一个 dict 有一个叫做 keys 的方法,它返回一个键列表。
我建议你尝试这样的事情:
#... omitted code
objectKeys = wjdata['product']['made'].keys()
# You should now have a list of the keys stored in objectKeys.
for key in objectKeys:
print key
if key == 'Taiwan':
print 'Eureka'
我还没有测试上面的代码,但我想你在这里得到了要点:)