簡體   English   中英

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

[英]how to create a valid json file using python?

使用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
    }
}

因此,即將出現的輸出具有“ \\”,我如何將它們全部刪除。 它總是出現在文件中,也嘗試過使用條帶但不值得。 救命!!

您是否嘗試重新制作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: https ://docs.python.org/3/library/json.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM