Python 在json转储方法中不需要的反斜杠

Python 在json转储方法中不需要的反斜杠,python,json,string-literals,Python,Json,String Literals,这将生成keystr=nested_对象 对于addstr10,它会产生 print(keystr) print(addstr10) dict[keystr] = addstr10 json.dump(dict, json_file, indent=2) 看起来不错,但是json文件在值对中有额外的反斜杠,我想去掉它 {"another_nested_object": { "another_another_nested_object":

这将生成keystr=nested_对象 对于addstr10,它会产生

print(keystr)
print(addstr10)
dict[keystr] = addstr10
json.dump(dict, json_file, indent=2)
看起来不错,但是json文件在值对中有额外的反斜杠,我想去掉它

{"another_nested_object": {          "another_another_nested_object": "ymwjkxpr",          "integervalue" : 11,          "floatvalue" : 4.703165912962773,          "anothernamer" : True,          "another_nested_object_1": {                  "another_key": "vbiofdhz"          }       }     }

原因是
addstr
已经编码为JSON。因此,当您将其作为值包含在字典中时,您将对其进行第二次编码

你应该先解码它,所以改变它

{
  "nested_object": "{\"another_nested_object\": {          \"another_another_nested_object\": \"ymwjkxpr\",          \"integervalue\" : 11,          \"floatvalue\" : 4.703165912962773,          \"anothernamer\" : True,          \"another_nested_object_1\": {                  \"another_key\": \"vbiofdhz\"          }       }     }"
}

但是,嵌套对象包含无效的JSON。JSON使用
true
false
表示布尔值,但您的字符串有
true
,无法正确解析

您可以尝试使用
ast.literal\u eval()
而不是
json.loads()


我不明白这个问题
json.dumps()
将始终在字符串周围加引号。为什么
nested\u object
的值是字符串而不是字典?我希望“另一个嵌套的\u object”在输出中像在值对中一样加引号。它应该这样做。请发布一些实际的代码,很难从您发布的内容中看出哪里出了问题。刚刚更新了我的summarydict[keystr]=json.loads(addstr10)dict[keystr]=addstr10 json.dump(dict,json_file,indent=2)这就是您所指的吗?如果是这样的话,它会给我一个运行时错误x=json.loads(addstr8)文件“C:\Users\williamzhang88\AppData\Local\Programs\Thonny\lib\json\u init\uuu.py”,第348行,在loads return\u default\u decoder.decode文件“C:\Users\williamzhang88\AppData\Local\Programs\Thonny\lib\json\decoder.py”中,第337行,在decode obj中,end=self.raw(s,idx=\u w(s,0).end())文件“C:\Users\williamzhang88\AppData\Local\Programs\Thonny\lib\json\decoder.py”,第353行,在原始解码obj中,end=self.scan_once(s,idx)嵌套对象是无效的json
True
应为
True
dict[keystr] = addstr10
dict[keystr] = json.loads(addstr10)
import ast
dict[keystr] = ast.literal_eval(addstr10)