JSON在Python中解析元素中的元素

JSON在Python中解析元素中的元素,python,json,parsing,web-scraping,Python,Json,Parsing,Web Scraping,我从一个网站的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 wjd

我从一个网站的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的正确方法是什么?

wjdata['product']['made']['Taiwan']有效

您正在索引一个没有的数组。 JSON如下所示:

{ 
    "result":"true",
    "product": {
        "made": {
            "Taiwan":"Taipei",
            "HongKong":"KongStore",
            "Area":"Asia"
        }
    }
}
并且上面的代码不包含数组

假设JSON结构如下所示:

{ 
    "result":"true",
    "product": {
        "made": [
            {"Taiwan":"Taipei"},
            {"HongKong":"KongStore"},
            {"Area":"Asia"}

        ]            
    }
}
#... 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'

通过简单查看json包的文档页面,我发现了以下转换表:

它告诉我们一个JSON对象转换成dict,dict有一个名为keys的方法,该方法返回一个键列表

我建议你试试这样:

{ 
    "result":"true",
    "product": {
        "made": [
            {"Taiwan":"Taipei"},
            {"HongKong":"KongStore"},
            {"Area":"Asia"}

        ]            
    }
}
#... 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'


我还没有测试过上面的代码,但我想你在这里得到了要点:)

wjdata['product']['made']['Taiwan']
?@Rakesh我得到了以下错误:TypeError:字符串索引必须是整数如果没有上下文,错误是毫无意义的,请发布完整的错误消息并打印您收到的确切json。实际上,他并没有收到json,他收到的是字典的字符串@xiholac761请检查我的帖子,很遗憾,它导致了一个错误:TypeError:字符串索引必须是整数。您是在尝试加载动态数据(使用多个键)还是只获取Taiwan键只是Taiwan键。您是对的,没有数组。是否可以从json数据中解析“Taipei”并打印出来?