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

时间:2017-10-27 13:50:17

标签: 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": "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中执行此操作的方法,例如this siteHere您可以找到我用来生成JSON数据的代码。

我尝试使用jsonmergejson-merger,但效果并不乐观。上面的网站做得很完美,但我需要用Python做。

特别是,jsonmerge使用the syntax from the documentation,输出只是前两个值......

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&#39。

如何合并?

3 个答案:

答案 0 :(得分:3)

或者像这样使用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

答案 1 :(得分:1)

假设你有多个jsons作为列表,如

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 here

>>> from itertools import chain
>>> list(chain.from_iterable(l))
将数据转储为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"}]

答案 2 :(得分:1)

......目前还不清楚你想要什么,这可能会有所帮助:

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'}]
相关问题