读取JSON时,literal_eval返回无效语法

2024-10-01 07:16:26 发布

您现在位置:Python中文网/ 问答频道 /正文

读取JSON并尝试求值时,返回语法错误

json文件包含以下数据

{
     "communication":{
        "xml":{
           "xmlData": "<test vers=\"1.0\" >random</test>",
           "user_id":"123456789"
        },
     },
}

代码段:

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文件的写入权限。我的应用程序正在读取数据。


Tags: 文件inpytestjsonevallinerandom
1条回答
网友
1楼 · 发布于 2024-10-01 07:16:26

您的json无效,如果无法修改该文件,请使用python修改数据

更正的json

{
     "communication":{
        "xml":{
           "xmlData":"<test vers=\"1.0\" >random</test>",
           "user_id":"123456789"
        }
     }
}

我的代码

import json
import ast

fd = open("text.json")
json_file = json.load(fd)

val = ast.literal_eval(json.dumps(json_file))
print(val)

输出

{'communication': {'xml': {'xmlData': '<test vers="1.0" >random</test>', 'user_id': '123456789'}}}

相关问题 更多 >