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

时间:2018-04-28 21:07:39

标签: 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.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但不值得。帮助!

2 个答案:

答案 0 :(得分:3)

你试着重新制作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)

答案 1 :(得分:0)

build 中的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:https://docs.python.org/3/library/json.html