微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用来自Ajax Repsonse的嵌套值浏览Python字典

我正在尝试从网站访问作为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,蓝色)中获取与“数量”相关的编号.

我通过使用将响应加载为字典

    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]

您可以使用该语言做更多的事情!就像用于JSON(和其他复杂数据结构)的sql.更多信息:http://adriank.github.io/ObjectPath/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐