首页 > 解决方案 > 如何摆脱json文件中的所有'\'

问题描述

我在 python 中工作,我有一个如下所示的 json 文件:

"{\"label\": \"red\", \"seconds\": 20}"
"{\"label\": \"blue\", \"seconds\": 10}"

我想摆脱所有反斜杠和引号,看起来像这样:

{label: red, seconds: 20}
 {label: blue, seconds: 10}

我附上了代码来展示我是如何获得 json 文件的,该文件由一串单独的 json 对象组成。

for value in finalOutputList:
    newOutputString = json.dumps(value)
    finalOutputString += (newOutputString + "\n")

with open('data.json', 'a') as outfile:
    for item in outputString.splitlines():
        json.dump(item, outfile)
        outfile.write("\n")

标签: pythonjson

解决方案


问题:您对对象进行双重编码,例如:


for value in finalOutputList:
    newOutputString = json.dumps(value)  # Encoded here with json.dumps
    finalOutputString += (newOutputString + "\n")

with open('data.json', 'a') as outfile:
    for item in outputString.splitlines():
        json.dump(item, outfile). # Encoded once again unnecessarily
        outfile.write("\n")

解决方案:去掉双重编码,只编码一次,例如:


for value in finalOutputList:
    newOutputString = json.dumps(value)  # leave this encoding
    finalOutputString += (newOutputString + "\n")

with open('data.json', 'a') as outfile:
    for item in outputString.splitlines():
        outfile.write(item)  # CHANGED to just write the already encoded json string here
        outfile.write("\n")

您将其切换为相反的方式,因此您将json.dumps()在写入文件时使用,然后留下您的 finalOutputString,但我推荐我刚刚向您展示的方式。


推荐阅读