rgamber
rgamber

Reputation: 5849

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?

Upvotes: 1

Views: 50

Answers (1)

falsetru
falsetru

Reputation: 368894

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.

Upvotes: 1

Related Questions