使用ajax repsonse中的嵌套值导航Python字典

使用ajax repsonse中的嵌套值导航Python字典,python,ajax,json,dictionary,python-2.x,Python,Ajax,Json,Dictionary,Python 2.x,我试图从网站访问一些嵌套为ajax响应的值 所有东西都输出为一条巨大的线,我无法向下导航。然而,为了让您了解它的外观,字典的pprint如下所示: {u'd': {u'Type': None, u'__type': u'TOPS.ajaxResponse', u'actionOnSuccess': None, u'data': u'{"BasicCodes":{"PRODUCTPRICES":[{"ProductId":"ProductA","CategoryId

我试图从网站访问一些嵌套为ajax响应的值

所有东西都输出为一条巨大的线,我无法向下导航。然而,为了让您了解它的外观,字典的pprint如下所示:

    {u'd': {u'Type': None,
    u'__type': u'TOPS.ajaxResponse',
    u'actionOnSuccess': None,
    u'data': u'{"BasicCodes":{"PRODUCTPRICES":[{"ProductId":"ProductA","CategoryId":"1","Color":"Red","Quantity":"0"},{"ProductId":"ProductA","CategoryId":"2","Color":"Blue","Quantity":"0"},{"ProductId":"ProductB","CategoryId":"1","Color":"Red","Quantity":"0"},{"ProductId":"ProductB","CategoryId":"2","Color":"Blue","Quantity":"0"}, ...and so on...

    .
    .
    .

    u'data2': None,
    u'dataExtra': None,
    u'errors': [],
    u'general_message': None,
    u'success': True}}
列出了数百种产品(ProductA、ProductB等),但我只想从特定产品(例如ProductB,Color Blue)获取与“数量”相关的数字

我使用

    json_data = urllib2.urlopen('website')
    content = json_data.read()
    dictionary = json.loads(content)
dictionary.keys()
只输出
'd'
,而
dictionary.values()
输出除此之外的所有内容,包括
u'success':True
,我希望它是一个单独的键/值组合。如果我尝试使用

    print dictionary['d']['data']['BasicCodes']['PRODUCTPRICES'][0]['Quantity']
我得到一个
TypeError错误:字符串索引必须是整数

问题是我如何加载数据?还是在导航键和值时遗漏了什么

不确定它是否相关,但当我输入时,我还得到一个错误
“unicode”对象没有属性“values”

    dictionary['d']['data'].values()

我是Python新手,因此在此方面如有任何帮助,我将不胜感激。

因为这种工作在任何语言中都是非常困难的(不仅仅是在Python中!)我创建了ObjectPath查询语言,以便轻松使用JSON文档:

Python方式:

$ sudo pip install objectpath
$ python
>>> from objectpath import *
>>> with open('test1.json') as f:
...    j = json.load(f)
>>> tree=Tree(j)
>>> tree.execute("$..PRODUCTPRICES[@.ProductId is "ProductA" and @.Color is "Blue"].Quantity")
[u'0']
控制台方式

git clone https://github.com/adriank/ObjectPath.git
cd ObjectPath/ObjectPathPy
python objectpath file.json
(or python objectpath -u URL)
>>> $..PRODUCTPRICES[@.ProductId is "ProductA" and @.Color is "Blue"].Quantity
[0]

你可以用这种语言做更多的事情!这就像SQL for JSON(和其他复杂的数据结构)。更多信息请访问:

字典['d']['data']
的值显然是一个字符串,而不是另一个字典:您可以看到它被
'
包围。您可以再次从JSON解码,但听起来您需要首先修复发送数据的任何东西。就是这样!谢谢你@DanielRoseman!