Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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 - Fatal编程技术网

如何使用python创建有效的json文件?

如何使用python创建有效的json文件?,python,json,Python,Json,使用python创建json文件,该文件将包含多个条目,如下所示: out='' with open('data.json', 'w') as outfile: i=0; for i in range(3): string = "test_"+str(i)+'"'+':{ "status": "false", "test_id": 123453},' out= out+string.replac

使用python创建json文件,该文件将包含多个条目,如下所示:

    out=''
    with open('data.json', 'w') as outfile:
        i=0;

        for i in range(3):
             string = "test_"+str(i)+'"'+':{ "status": "false", "test_id": 123453},'
             out= out+string.replace("\\","");
             i=i+1;      
        json.dump("{"+out+"}", outfile)
获取输出的文件为:

 "{test_0\":{ \"status\": \"false\", \"test_id\": 123453},test_1\":{ \"status\": \"false\", \"test_id\": 123453},test_2\":{ \"status\": \"false\", \"test_id\": 123453},}"
但理想的正确输出应为:

 {
 "test_0":
    {
     "status": "false", 
    "test_id": 123453
    },
  "test_1":
    { 
     "status": "false",
     "test_id": 123453
    },
  "test_2":
    { 
      "status": "false",
     "test_id": 123453
    }
}

所以接下来的输出有“\”我如何删除它们。它总是出现在文件中,也尝试过使用strip,但不值得。救命

您是否尝试重新生成json.dump? 通常,json.dump会完成这项工作

import json
import sys

out = {}
i = 0

for i in range(3):
    out["test_"+str(i)] = { "status": "false", "test_id": 123453 }
    i = i + 1

json.dump(out, sys.stdout, indent = 4)
内置的json模块将pyhton数据结构转储到合适的json代码中

您为它提供了一个字符串,它将其转储为一个正确的字符串。它屏蔽了每个内部的
,将其作为
\”
放在您的文件中,这样当您读取文件和json.load()时,它就会重新创建您给它的确切python字符串

一句话:不要构建数据字符串,构建数据,让
json
完成它的工作:

import json
d =  {'test_0': {'status': 'false', 'test_id': 123453}, 
      'test_1': {'status': 'false', 'test_id': 123453}, 
      'test_2': {'status': 'false', 'test_id': 123453}}

with open('data.json', 'w') as outfile:
    json.dump(d,outfile, indent=4)   # use indent to pretty print


with open('data.json', 'r') as outfile:
    print("")
    print(outfile.read())
输出:

{
    "test_0": {
        "status": "false",
        "test_id": 123453
    },
    "test_1": {
        "status": "false",
        "test_id": 123453
    },
    "test_2": {
        "status": "false",
        "test_id": 123453
    }
}

Doku:

如果您想要一个JSON对象而不是JSON字符串,那么为什么要将字符串传递给
JSON.dump
,而不是相应的数据python数据类型(a
dict
)?