正确读取和解析JSON

时间:2017-06-09 18:32:40

标签: python mongodb-query

[
    {
        u"_id": ID('1234'),
        u"attributes": {u"FN": u"John", u"LN": u"De"},
        u"refs": {
            u"entries": {
                u"id": [u"aa1", u"3da", u"42q"],
                u"type": u"Info"
            }
        }
    },
    {
        u"_id": ID('1278'),
        u"attributes": {u"FN": u"Trey", u"LN": u"Mullens"},
        u"refs": {
            u"entries": {
                u"id": [u"aa1", u"3d4", u"42q"],
                u"type": u"Info"
            }
        }
    }
]

从上面的dicts列表中,我想创建一个函数来查找ID为1234和1278的两个记录中refs下的每个条目,即条目的计数。我正面临着解析dict的问题。从Mongo中提取数据。我目前要做的是创建一个接受上面数据的函数,这是mongo DB中的一个集合,第二个参数是我想要达到的数据,即refs.entries。我正在使用mongo的find函数来解析数据。任何支持将受到高度赞赏。以下是代码 -

def fun(data, tar):
    result = {}

    i, j = tar.split('.')
    for item1 in data.find({},{'_id':0, tar:1}):

            for item in item1[i][j].strip("[]").split(','):
                item = item.strip()
                if item in result:
                    result[item] += 1
                else:
                    result[item] = 1
    return result

1 个答案:

答案 0 :(得分:0)

数据是一个dicts列表,需要转换为JSON或其他方式JSON编码。

 import json

 dict_obj = [{'a': 'b', 'c': 'd', 'e': {'1': 2}}, {1: 2, 2: 3}]
 # encode to a JSON formatted str
 encoded = json.dumps(r)

 # encode to JSON formatted steam to file
 with open(filename, 'w') as f:
     json.dump(f, dict_obj)

ID类对象也需要JSON可序列化,否则dump会抛出错误。如果您的ID类不是JSON可序列化的,那么您首先必须使ID类JSON可序列化为here所述。