rgamber rgamber - 1 month ago 9
JSON Question

Forming a JSON Arrays with Objects using a Python object

I have a some variables that I need to dump as a json of the format:

{
"elements":[
{
"key":"foo",
"value":"7837"
},
{
"key":"bar",
"value":"3423"
}
]
}


I am trying to figure out the right object which would give the above structure upon usin
json.dumps()
. I see that in python, lists give a json array where as dictionaries give a json object while using json dumps.

I am trying something like:

x={}
x["elements"]={}
x["elements"]["key"]="foo"
x["elements"]["value"]="7837"
x["elements"]["key"]="bar"
x["elements"]["value"]="3423"
json_x=json.dumps(x)


But this still gives me:

{"elements": {"key": "bar", "value": "3423"}}


which is obviously incorrect.

How to I incorporate the correct dictionary and list structure to get to the above json?

Answer

Why don't you just use literal?

x = {
    "elements": [
        {"key":"foo", "value":"7837"},
        {"key":"bar", "value":"3423"}
    ]
}

To fix your code, you need to use a list literal ([]) when assigning to elements dictionary entry:

>>> x = {}
>>> x["elements"] = []  # <--- 
>>> x["elements"].append({})
>>> x["elements"].append({})
>>> x["elements"][0]["key"]="foo"
>>> x["elements"][0]["value"]="7837"
>>> x["elements"][1]["key"]="bar"
>>> x["elements"][1]["value"]="3423"
>>> json.dumps(x)
'{"elements": [{"value": "7837", "key": "foo"}, {"value": "3423", "key": "bar"}]}'

But, it's hard to read, maintain.