Converting dictionary to JSON Converting dictionary to JSON python python

Converting dictionary to JSON


json.dumps() converts a dictionary to str object, not a json(dict) object! So you have to load your str into a dict to use it by using json.loads() method

See json.dumps() as a save method and json.loads() as a retrieve method.

This is the code sample which might help you understand it more:

import jsonr = {'is_claimed': 'True', 'rating': 3.5}r = json.dumps(r)loaded_r = json.loads(r)loaded_r['rating'] #Output 3.5type(r) #Output strtype(loaded_r) #Output dict


json.dumps() returns the JSON string representation of the python dict. See the docs

You can't do r['rating'] because r is a string, not a dict anymore

Perhaps you meant something like

r = {'is_claimed': 'True', 'rating': 3.5}json = json.dumps(r) # note i gave it a different namefile.write(str(r['rating']))


json.dumps() is used to decode JSON data

  • json.loads take a string as input and returns a dictionary as output.
  • json.dumps take a dictionary as input and returns a string as output.
import json# initialize different datastr_data = 'normal string'int_data = 1float_data = 1.50list_data = [str_data, int_data, float_data]nested_list = [int_data, float_data, list_data]dictionary = {    'int': int_data,    'str': str_data,    'float': float_data,    'list': list_data,    'nested list': nested_list}# convert them to JSON data and then print itprint('String :', json.dumps(str_data))print('Integer :', json.dumps(int_data))print('Float :', json.dumps(float_data))print('List :', json.dumps(list_data))print('Nested List :', json.dumps(nested_list, indent=4))print('Dictionary :', json.dumps(dictionary, indent=4))  # the json data will be indented

output:

String : "normal string"Integer : 1Float : 1.5List : ["normal string", 1, 1.5]Nested List : [    1,    1.5,    [        "normal string",        1,        1.5    ]]Dictionary : {    "int": 1,    "str": "normal string",    "float": 1.5,    "list": [        "normal string",        1,        1.5    ],    "nested list": [        1,        1.5,        [            "normal string",            1,            1.5        ]    ]}
  • Python Object to JSON Data Conversion
|                 Python                 |  JSON  ||:--------------------------------------:|:------:||                  dict                  | object ||               list, tuple              |  array ||                   str                  | string || int, float, int- & float-derived Enums | number ||                  True                  |  true  ||                  False                 |  false ||                  None                  |  null  |

UPDATE

In the JSON file

nested_dictionary = {    'one': nested_list,    'two': dictionary,}json_dict = {'Nested Dictionary': nested_dictionary,             'Multiple':[nested_dictionary, nested_dictionary, nested_dictionary]            }with open("test_nested.json", "w") as outfile:    json.dump(json_dict, outfile, indent=4, sort_keys=False)

chart response

enter image description here

output into test_nested.json

{    "Nested Dictionary": {        "one": [            1,            1.5,            [                "normal string",                1,                1.5            ]        ],        "two": {            "int": 1,            "str": "normal string",            "float": 1.5,            "list": [                "normal string",                1,                1.5            ],            "nested list": [                1,                1.5,                [                    "normal string",                    1,                    1.5                ]            ]        }    },    "Multiple": [        {            "one": [                1,                1.5,                [                    "normal string",                    1,                    1.5                ]            ],            "two": {                "int": 1,                "str": "normal string",                "float": 1.5,                "list": [                    "normal string",                    1,                    1.5                ],                "nested list": [                    1,                    1.5,                    [                        "normal string",                        1,                        1.5                    ]                ]            }        },        {            "one": [                1,                1.5,                [                    "normal string",                    1,                    1.5                ]            ],            "two": {                "int": 1,                "str": "normal string",                "float": 1.5,                "list": [                    "normal string",                    1,                    1.5                ],                "nested list": [                    1,                    1.5,                    [                        "normal string",                        1,                        1.5                    ]                ]            }        },        {            "one": [                1,                1.5,                [                    "normal string",                    1,                    1.5                ]            ],            "two": {                "int": 1,                "str": "normal string",                "float": 1.5,                "list": [                    "normal string",                    1,                    1.5                ],                "nested list": [                    1,                    1.5,                    [                        "normal string",                        1,                        1.5                    ]                ]            }        }    ]}

class instance to JSON

  • A simple solution:
class Foo(object):    def __init__(            self,            data_str,            data_int,            data_float,            data_list,            data_n_list,            data_dict,            data_n_dict):        self.str_data = data_str        self.int_data = data_int        self.float_data = data_float        self.list_data = data_list        self.nested_list = data_n_list        self.dictionary = data_dict        self.nested_dictionary = data_n_dictfoo = Foo(    str_data,    int_data,    float_data,    list_data,    nested_list,    dictionary,    nested_dictionary)# Because the JSON object is a Python dictionary. result = json.dumps(foo.__dict__, indent=4)# See table above.# or with built-in function that accesses .__dict__ for you, called vars()# result = json.dumps(vars(foo), indent=4)print(result) # same as before
  • Even simpler
class Bar:    def toJSON(self):        return json.dumps(self, default=lambda o: o.__dict__,                          sort_keys=False, indent=4)bar = Bar()bar.web = "Stackoverflow"bar.type = "Knowledge"bar.is_the_best = Truebar.user = Bar()bar.user.name = "Milovan"bar.user.age = 34print(bar.toJSON())

chart response

enter image description here

output:

{    "web": "Stackoverflow",    "type": "Knowledge",    "is_the_best": true,    "user": {        "name": "Milovan",        "age": 34    }}