【问题标题】:Forming a JSON Arrays with Objects using a Python object使用 Python 对象形成带有对象的 JSON 数组
【发布时间】:2016-10-25 01:28:29
【问题描述】:

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

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

我正在尝试找出正确的对象,它会在使用json.dumps() 时给出上述结构。我看到在 python 中,列表给出了一个 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?

【问题讨论】:

  • 你为什么不直接使用x = {"elements":[{"key":"foo", "value":"7837"}, {"key":"bar", "value":"3423"}]}
  • 确实可以使用。我只是想更好地理解 python 对象/json 结构。但是你说的有效!
  • elements 键有另一个数组(Python 列表)作为值,而不是另一个对象。那是你的错。
  • dumps 转换为 JSON 的 Python 结构...是 loads 从该 JSON 创建的结构。

标签: python json list python-2.7 dictionary


【解决方案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"}]}'

但是,它很难阅读和维护。

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2020-07-02
    • 2021-05-12
    相关资源
    最近更新 更多