将json字典折叠为一个json

2024-06-16 18:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这个问题上看到了很多几乎相似的问题,但真的无法解决

我有如下的JSON响应,我想将其折叠成1个JSON对象

>>> responses
[
{'result': [{'number': 'INC0010001'}]}, 
{'result': [{'number': 'INC0010002'}]}, 
{'result': [{'number': 'INC0010003'}]}, 
{'result': [{'number': 'INC0010004'}]}, 
{'result': [{'number': 'INC0010005'}]}]
{
  "result": [
    {
      "number": "INC0010001"
    },
    {
      "number": "INC0010002"
    },
    {
      "number": "INC0010003"
    },
    {
      "number": "INC0010004"
    },
    {
      "number": "INC0010005"
    }  ]
}

我已经试过了,但它会继续覆盖,因为它是基于密钥的

result = {}
for d in responses:
    result.update(d)

编辑:我很少使用JSON格式。因此,与他们打交道很有挑战性

最终输出需要使用双引号,而不是单引号。例如,'result'应该是"result",与"number""INC00XXXXX"相同

并注意到,

[{'number': 'INC0010001'}]应该变成{"number": "INC0010001"}

请注意,括号没有删除,单引号替换为双引号

在某些情况下,INC也可能有实际的双引号,例如INC"fdas"。 所以我想,它应该是{"number": "INC\"fdas\""}


Tags: 对象jsonnumber密钥resultresponsesinc双引号
3条回答

当然,是这样的:

In [1]: responses = [
   ...: {'result': [{'number': 'INC0010001'}]},
   ...: {'result': [{'number': 'INC0010002'}]},
   ...: {'result': [{'number': 'INC0010003'}]},
   ...: {'result': [{'number': 'INC0010004'}]},
   ...: {'result': [{'number': 'INC0010005'}]}]

In [2]: {"result": [result for d in responses for result in d['result']]}
Out[2]:
{'result': [{'number': 'INC0010001'},
  {'number': 'INC0010002'},
  {'number': 'INC0010003'},
  {'number': 'INC0010004'},
  {'number': 'INC0010005'}]}

尝试:

output = {"result":[]}
for d in responses:
  output["result"] += d["result"]
print(output)

这个

result = dict()
for d in responses:
    if len(result) == 0:
        result.update({'result': d['result']})
    else:
        result['result'] +=  d['result']

相关问题 更多 >