将多个JSON合并为单个JSON(Python)

将多个JSON合并为单个JSON(Python),python,json,merge,Python,Json,Merge,我正在寻找一种将多个JSON合并为一个JSON的方法。我的输出采用以下格式: [{"Nome bollettino": "Bollettino 1"}, {"Causale": "1"}, {"Numero": "1"}] [{"Nome bollettino": "Bollettino 2"}, {"Causale": "2"}, {"Numero": "2"}] [{"Nome bollettino": "Bollettino 3"}, {"Causale": "3"}, {"Numero"

我正在寻找一种将多个JSON合并为一个JSON的方法。我的输出采用以下格式:

[{"Nome bollettino": "Bollettino 1"}, {"Causale": "1"}, {"Numero": "1"}]
[{"Nome bollettino": "Bollettino 2"}, {"Causale": "2"}, {"Numero": "2"}]
[{"Nome bollettino": "Bollettino 3"}, {"Causale": "3"}, {"Numero": "3"}]
[{"Nome bollettino": "Bollettino 4"}, {"Causale": "4"}, {"Numero": "4"}]
[{"Nome bollettino": "Bollettino 5"}, {"Causale": "5"}, {"Numero": "5"}]
[{"Nome bollettino": "Bollettino 6"}, {"Causale": "6"}, {"Numero": "6"}]
[{"Nome bollettino": "Bollettino 7"}, {"Causale": "7"}, {"Numero": "7"}]
[{"Nome bollettino": "Bollettino 8"}, {"Causale": "8"}, {"Numero": "8"}]
[{"Nome bollettino": "Bollettino 9"}, {"Causale": "9"}, {"Numero": "9"}]
[{"Nome bollettino": "Bollettino 10"}, {"Causale": "10"}, {"Numero": "10"}]
每一行都是有效的JSON。我正在寻找一种用Python实现的方法,比如do。 您可以找到我用来生成JSON数据的代码

我曾尝试使用
jsonmerge
json合并
,但效果不太好。上面的网站做的工作非常完美,但我需要用Python来做

特别是,使用
jsonmerge
using时,输出仅为前两个值

result = merge(bollettini, causale, numero)
print(result)

{'Nome bollettino': 'Bollettino 1', 'Causale': '1'}
{'Nome bollettino': 'Bollettino 2', 'Causale': '2'}
{'Nome bollettino': 'Bollettino 3', 'Causale': '3'}

etc...
…甚至不是JSON的


如何合并它们?

假设您有多个JSON作为列表列表,如

l = [[{"Nome bollettino": "Bollettino 1"}, {"Causale": "1"}, {"Numero": "1"}]
[{"Nome bollettino": "Bollettino 2"}, {"Causale": "2"}, {"Numero": "2"}]
[{"Nome bollettino": "Bollettino 3"}, {"Causale": "3"}, {"Numero": "3"}]
[{"Nome bollettino": "Bollettino 4"}, {"Causale": "4"}, {"Numero": "4"}]
[{"Nome bollettino": "Bollettino 5"}, {"Causale": "5"}, {"Numero": "5"}]
[{"Nome bollettino": "Bollettino 6"}, {"Causale": "6"}, {"Numero": "6"}]
[{"Nome bollettino": "Bollettino 7"}, {"Causale": "7"}, {"Numero": "7"}]
[{"Nome bollettino": "Bollettino 8"}, {"Causale": "8"}, {"Numero": "8"}]
[{"Nome bollettino": "Bollettino 9"}, {"Causale": "9"}, {"Numero": "9"}]
[{"Nome bollettino": "Bollettino 10"}, {"Causale": "10"}, {"Numero": "10"}]]
您只需将列表链接成一个列表!阅读有关
itertools.chain

将数据作为json转储后 输出:


。。。你想要什么还不清楚,也许这会有帮助:

input = [
    [{"Nome bollettino": "Bollettino 1"}, {"Causale": "1"}, {"Numero": "1"}],
    [{"Nome bollettino": "Bollettino 2"}, {"Causale": "2"}, {"Numero": "2"}],
    [{"Nome bollettino": "Bollettino 3"}, {"Causale": "3"}, {"Numero": "3"}],
    [{"Nome bollettino": "Bollettino 4"}, {"Causale": "4"}, {"Numero": "4"}],
    [{"Nome bollettino": "Bollettino 5"}, {"Causale": "5"}, {"Numero": "5"}],
    [{"Nome bollettino": "Bollettino 6"}, {"Causale": "6"}, {"Numero": "6"}],
    [{"Nome bollettino": "Bollettino 7"}, {"Causale": "7"}, {"Numero": "7"}],
    [{"Nome bollettino": "Bollettino 8"}, {"Causale": "8"}, {"Numero": "8"}],
    [{"Nome bollettino": "Bollettino 9"}, {"Causale": "9"}, {"Numero": "9"}],
    [{"Nome bollettino": "Bollettino 10"}, {"Causale": "10"}, {"Numero": "10"}]
]

result = []
for line in input:
    result.append({k:v for x in line for (k,v) in x.items()})
结果:

[{'Causale': '1', 'Nome bollettino': 'Bollettino 1', 'Numero': '1'},
 {'Causale': '2', 'Nome bollettino': 'Bollettino 2', 'Numero': '2'},
 {'Causale': '3', 'Nome bollettino': 'Bollettino 3', 'Numero': '3'},
 {'Causale': '4', 'Nome bollettino': 'Bollettino 4', 'Numero': '4'},
 {'Causale': '5', 'Nome bollettino': 'Bollettino 5', 'Numero': '5'},
 {'Causale': '6', 'Nome bollettino': 'Bollettino 6', 'Numero': '6'},
 {'Causale': '7', 'Nome bollettino': 'Bollettino 7', 'Numero': '7'},
 {'Causale': '8', 'Nome bollettino': 'Bollettino 8', 'Numero': '8'},
 {'Causale': '9', 'Nome bollettino': 'Bollettino 9', 'Numero': '9'},
 {'Causale': '10', 'Nome bollettino': 'Bollettino 10', 'Numero': '10'}]

或者像这样使用2D数组输出

import json


idx = 0
count = [idx]
data = []
while idx < 10:
  idx += 1

  bollettini = {'Nome bollettino': 'Bollettino ' + str(idx) }
  causale    = {'Causale': str(idx) }
  numero =     {'Numero': str(idx)  }


  data.append([bollettini]+[causale]+[numero])

json_data = json.dumps(data)
print (json_data) #added parenthesis
导入json
idx=0
计数=[idx]
数据=[]
当idx<10时:
idx+=1
博莱蒂尼={'Nome bollettino':'bollettino'+str(idx)}
causale={'causale':str(idx)}
numero={'numero':str(idx)}
data.append([bollettini]+[causale]+[numero])
json_data=json.dumps(数据)
打印(json_数据)#添加括号

为什么不包括
“Numero”
?你希望输出的JSON是哪种格式?@WillemVanOnsem这是“jsonmerge”的输出,不是我的。@ZdaR我不知道你的意思。它应该是有效的JSON格式。谢谢这也是一个有效的JSON格式:
[{}]
,你到底在找什么?根据jsonlint@Link对不起,我不明白。请解释一下
无效是什么意思
?将输出粘贴到。它将给出一个无效的JSON。啊!这是因为,我粘贴的输出有单引号
,而不是双引号<代码>“这是因为,为了进行测试,我将您的输入复制粘贴到一个字符串,然后对其进行处理以获得列表!我已更正了输出!答案与有关。根据jsonlint,它无效。是的,这是一个Python对象。您需要使用
json.dumps(result)
来接收有效的json字符串!
[{'Causale': '1', 'Nome bollettino': 'Bollettino 1', 'Numero': '1'},
 {'Causale': '2', 'Nome bollettino': 'Bollettino 2', 'Numero': '2'},
 {'Causale': '3', 'Nome bollettino': 'Bollettino 3', 'Numero': '3'},
 {'Causale': '4', 'Nome bollettino': 'Bollettino 4', 'Numero': '4'},
 {'Causale': '5', 'Nome bollettino': 'Bollettino 5', 'Numero': '5'},
 {'Causale': '6', 'Nome bollettino': 'Bollettino 6', 'Numero': '6'},
 {'Causale': '7', 'Nome bollettino': 'Bollettino 7', 'Numero': '7'},
 {'Causale': '8', 'Nome bollettino': 'Bollettino 8', 'Numero': '8'},
 {'Causale': '9', 'Nome bollettino': 'Bollettino 9', 'Numero': '9'},
 {'Causale': '10', 'Nome bollettino': 'Bollettino 10', 'Numero': '10'}]
import json


idx = 0
count = [idx]
data = []
while idx < 10:
  idx += 1

  bollettini = {'Nome bollettino': 'Bollettino ' + str(idx) }
  causale    = {'Causale': str(idx) }
  numero =     {'Numero': str(idx)  }


  data.append([bollettini]+[causale]+[numero])

json_data = json.dumps(data)
print (json_data) #added parenthesis