1

I am playing with JSON format and there is a small problem with this (very simple) code.

import json

bol = []
caus = []
num = []

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

    bollettini = \
        {
            'Nome bollettino': 'Bollettino ' + str(idx)
        }

    causale = \
        {
            'Causale': str(idx)
        }

    numero = \
        {
            'Numero': str(idx)
        }

    bol.append(bollettini)
    caus.append(causale)
    num.append(numero)

    data = (bol+caus+num)
    json_data = json.dumps(data)

    print(json_data)

It prints out this:

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

It is different from what I want to achieve, which is this kind of 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"}]

and so on until the condition is satisfied.

How to do it ?

Thanks

lucians
  • 2,239
  • 5
  • 36
  • 64

4 Answers4

3

You can do it like below:

json_data = []
idx = 0
while idx < 10:
    idx += 1

    data =[ {
            'Nome bollettino': 'Bollettino ' + str(idx)
        },
        {
            'Causale': str(idx)
        },
        {
            'Numero': str(idx)
        }]
    json_data.append(data)
print(json_data)
Naresh Chaudhary
  • 705
  • 5
  • 14
2
import json

idx = 0
count = [idx]
while idx < 10:
    bol = []
    caus = []
    num = []
    idx += 1

    bollettini = \
        {
            'Nome bollettino': 'Bollettino ' + str(idx)
        }

    causale = \
        {
            'Causale': str(idx)
        }

    numero = \
        {
            'Numero': str(idx)
        }

    bol.append(bollettini)
    caus.append(causale)
    num.append(numero)

    data = (bol+caus+num)
    json_data = json.dumps(data)

    print(json_data)

This should do.

The solution is either to empty the list bol, caus and num each time, or initialise them within the while.

Zac
  • 1,305
  • 3
  • 17
  • 28
  • That's it. Selected as answer because of the explanation. Also the other answers are good. Thanks guys. – lucians Oct 27 '17 at 12:45
  • Little OT: look at the desired output result. Do you know how to create a single JSON from it ? Thanks again. – lucians Oct 27 '17 at 12:47
1

Something like this should work. Just make sure you put all of your variables into a list and append that to your final list of lists.

import json

idx_range = 10
data = []
for idx in range(1, idx_range):
    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)
Chris
  • 15,819
  • 3
  • 24
  • 37
1

Or like this:

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
Marco
  • 1,952
  • 1
  • 17
  • 23
  • works too... Do you know how to create, from this output, a single JSON ? – lucians Oct 27 '17 at 12:52
  • this new version creates a single json a 2d array – Marco Oct 27 '17 at 14:19
  • Awesome man. You're the best. Post it [here](https://stackoverflow.com/questions/46976665/merge-multiple-json-into-single-one-python) and link also this question. For me it's the answer of the other question. Thanks – lucians Oct 27 '17 at 14:21