使用Python对象形成带有对象的JSON数组

时间:2016-10-25 01:28:29

标签: python json list python-2.7 dictionary

我有一些变量需要转储为格式的json:

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

我试图找出一个正确的对象,它将在json.dumps()使用上面给出上述结构。我在python中看到,list给出了一个json数组,其中字典在使用json转储时给出json对象。

我正在尝试类似的事情:

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

但这仍然让我:

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

这显然是不正确的。

如何合并正确的字典和列表结构以获取上述json?

1 个答案:

答案 0 :(得分:1)

为什么不用文字?

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

要修复代码,在分配到[]字典条目时需要使用列表文字(elements):

>>> 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"}]}'

但是,很难阅读,维护。