一尘不染

解析嵌套的JSON数据

json

此JSON输出来自MongoDB聚合查询。我本质上需要将嵌套数据JSON解析为以下’ total''_id'值。

{
'ok': 1.0, 
'result': [
            {
                'total': 142250.0, 
                '_id': 'BC'
            }, 
            {
                'total': 210.88999999999996,
                 '_id': 'USD'
            },

            {
                'total': 1065600.0, 
                '_id': 'TK'
            }
            ]
}

我尝试了5种不同的技术来从中获得所需的信息,但是使用jsonsimplejson模块却遇到了问题。

理想情况下,输出将是这样的:

142250.0, BC
210.88999999999996, USD
1065600.0, TK

阅读 436

收藏
2020-07-27

共1个答案

一尘不染

注意:来自MongoDB的JSON响应实际上无效。JSON需要双引号("),而不是单引号(')。

我不确定为什么您的响应中有单引号而不是双引号,但是从其外观上,您可以替换它们,然后只使用内置json模块:

from __future__ import print_function
import json

response = """{
    'ok': 1.0, 
    'result': [
        {
            'total': 142250.0, 
            '_id': 'BC'
        }, 
        {
            'total': 210.88999999999996,
             '_id': 'USD'
        },

        {
            'total': 1065600.0, 
            '_id': 'TK'
        }
        ]
}"""

# JSON requires double-quotes, not single-quotes.
response = response.replace("'", '"')
response = json.loads(response)
for doc in response['result']:
    print(doc['_id'], doc['total'])
2020-07-27