【发布时间】:2021-12-10 00:47:19
【问题描述】:
读取 JSON 并尝试评估时,返回语法错误。
json 文件有以下数据
{
"communication":{
"xml":{
"xmlData": "<test vers=\"1.0\" >random</test>",
"user_id":"123456789"
},
},
}
代码 sn-p:
import ast
.
.
#json_file is the python obj which consists the data read from json file
.
val = ast.literal_eval(json.dumps(json_file))
print(val)
抛出错误:
Traceback (most recent call last):
File "./prog.py", line 12, in <module>
File "/usr/lib/python3.8/ast.py", line 59, in literal_eval
node_or_string = parse(node_or_string, mode='eval')
File "/usr/lib/python3.8/ast.py", line 47, in parse
return compile(source, filename, mode, flags,
File "<unknown>", line 4
"xmlData": "<test vers="1.0" >random</test>",
^
SyntaxError: invalid syntax
请提出解决语法错误的方法。 请注意,将 vers="1.0" 更改为 vers='1.0' 可以解决问题,但我没有此 JSON 文件的写入权限。我的应用程序只是在读取数据。
【问题讨论】:
-
如果直接加载字符串来制作字典,你可以用正则表达式或蛮力
data_str.replace('vers="1.0"', "vers='1.0'")解析字符串,你会遇到嵌套双引号冲突,然后使用json.load -
生产中的xml数据将是动态的。例如:
random
标签: python json python-3.x xml abstract-syntax-tree