Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用子数组动态构建JSON_Python_Json_Dynamic - Fatal编程技术网

Python使用子数组动态构建JSON

Python使用子数组动态构建JSON,python,json,dynamic,Python,Json,Dynamic,我可以从简单的dictionary{}和List[]构建JSON,但是当我尝试构建更复杂的结构时。我在输出JSON中嵌入了“\” 我想要的结构是: {"name": "alpha", "results": [{"entry1": [ {"sub1": "one"}, {"sub2": "two"} ] }, {"entry2": [ {"sub1": "one"},

我可以从简单的dictionary{}和List[]构建JSON,但是当我尝试构建更复杂的结构时。我在输出JSON中嵌入了“\”

我想要的结构是:

{"name": "alpha",
 "results": [{"entry1": 
        [
        {"sub1": "one"}, 
        {"sub2": "two"}
        ]
    }, 
    {"entry2": 
        [
        {"sub1": "one"}, 
        {"sub2": "two"}
        ]
    }
]
}
这就是我得到的:

   {'name': 'alpha',
    'results': '[{"entry1": "[{\\\\"sub1\\": \\\\"one\\\\"}, {\\\\"sub2\\\\": '
            '\\\\"two\\\\"}]"}, {"entry2": "[{\\\\"sub1\\\\": \\\\"one\\\\"}, 
    {\\\\"sub2\\\\": '
            '\\\\"two\\\\"}]"}]'}
请注意嵌入的\\。每次代码经过json.dumps时,都会附加一个\

下面的代码几乎可以工作,但不能:

import json
import pprint
testJSON = {}

testJSON["name"] = "alpha"

#build sub entry List
entry1List = []
entry2List = []
topList = []
a1 = {}
a2 = {}
a1["sub1"] = "one"
a2["sub2"] = "two"

entry1List.append(a1)
entry1List.append(a2)

entry2List.append(a1)
entry2List.append(a2)

# build sub entry JSON values for Top List
tmpDict1 = {}
tmpDict2 = {}
tmpDict1["entry1"] = json.dumps(entry1List)
tmpDict2["entry2"] = json.dumps(entry2List)
topList.append(tmpDict1)
topList.append(tmpDict2)

# Now lets' add the List with 2 sub List to the JSON
testJSON["results"] = json.dumps(topList)

pprint.pprint (testJSON)
请看这一行:

tmpDict1[“entry1”]=json.dumps(entry1List)

这是指定key entry1具有将entry1List转换为json的字符串输出值。本质上,它将JSON放在JSON字符串中,因此它被转义。要嵌套数据结构,我将使用:

tmpDict1[“entry1”]=entry1List


其他地方也一样。一旦有了列表和目录树-您只需在根容器(目录或列表)上调用一次
json.dumps()

您将编码的json嵌入目录,然后重新编码已经编码的json。如果要“合并”JSON,只需“合并”dictsSimply:首先以Pyhon dict或list的形式构建数据,最后使用
JSON.dumps(data)
将其转换为JSON。JSON不是特殊的数据类型,它是以字符串形式表示某些数据的序列化方法。啊!有道理-我的使用模式是错误的。谢谢你的澄清。我将重做我的方法。经过测试-效果很好。因此,首先构建结构,然后使用json.dumps()函数。谢谢你的洞察力。