JSON的Python字典无法理解基础

时间:2018-06-29 14:22:44

标签: python arrays json dictionary

在此示例中,我可以使用具有所需结构的字典创建JSON。

import json

jsondata = {}
jsondata = {'type':'add', 'id':'','fields':{'message':'text', 'from':'email@email.com'}}
jsfields = jsondata, jsondata
print json.dumps(jsfields)

这是所需的输出。

[
  {
    "id": "",
    "type": "add",
    "fields": {
      "from": "email@email.com",
      "message": "text"
    }
  },
  {
    "id": "",
    "type": "add",
    "fields": {
      "from": "email@email.com",
      "message": "text"
    }
  }
]

现在我不明白的是如何在此单个数组中添加更多json对象?

从这一点来看,我不知道如何在jsfields中添加与下一个数组相同的内容。

{
    "id": "",
    "type": "add",
    "fields": {
      "from": "email@email.com",
      "message": "text"
    }

}

2 个答案:

答案 0 :(得分:1)

jsfields = jsondata, jsondata

此行创建一个包含两个jsondata副本的元组。元组有点像一个列表,但是是不可变的,这意味着在创建后,就不能在其中添加任何内容。

您可能要执行以下操作来创建列表:

jsfields = [jsondata, jsondata]

这将创建一个包含两个jsondata副本的列表。然后,您可以轻松添加更多条目:

jsfields.append(some_other_dict)

答案 1 :(得分:0)

您应该将JSON字符串转换回python对象,然后在列表中添加新项目,然后再次将其转换为JSON。

import json

jsondata = {}
jsondata = {'type':'add', 'id':'','fields':{'message':'text', 'from':'email@email.com'}}
jsfields = jsondata, jsondata
json_output = json.dumps(jsfields) # this is where your old output is
new_json = json.loads(json_output) # convert the old output back to python object
new_json.append(jsondata) # add new item to the list
print(json.dumps(new_json)) # convert to JSON again