I am searching for a way to merge multiple JSONs into a single one. My output is in this format:
[{"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"}]
Every single line is a valid JSON. I a looking for a way to do it in Python, like this site do. Here you can find the code I am using to generate JSON data.
I have tried to use jsonmerge
and json-merger
but it's not so effective. The site above do the work perfect but I need to do it in Python.
Particularly, with jsonmerge
using the syntax from the documentation , the output is only the first two values...
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...
...which are not even JSON's.
How to merge them ?
Or like this with a 2D array output.
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
Say you have multiple jsons as list of lists like
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"}]]
You just need to chain the lists to form a single one! Read more on itertools.chain
here
>>> from itertools import chain
>>> list(chain.from_iterable(l))
after dumping your data as json Output:
[{"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"}]
... it is quite unclear what you want have, may that helps:
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()})
result:
[{'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'}]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.