首页 > 解决方案 > JSON加载中错误值的错误处理

问题描述

我在使用json.load.

with open(file) as json_file:
  self._metdata = json.load(json_file)

一个文件中的行是坏的,并给出了这个错误:

Expecting property name enclosed in double quotes: line 515716 column 1 (char 24223047)

我希望它json.load忽略这个值并继续加载其余的值,但我找不到办法做到这一点。我最后做的是逐行阅读并检查错误,但它非常慢。有更好的方法吗?谢谢。

for file in [self._metadata_file_name, self._pharses_map_file_name]:
    with open(file) as json_file:
        for line in json_file:
            try:
                row = json.loads(line)
                if row:
                    if file == self._metadata_file_name:
                        self._metdata = {**self._metdata, **row}
                    else:
                        self._pharses_map = {**self._pharses_map, **row}
            except Exception as e:
                self._logger.log(message="Error pasring JSON " + line + ", for model: " + self._mode + ", file: " + self._metadata_file_name, error=str(e), metadata={"mode" : self._mode}, logType=self._logger.LOG_TYPE_ERROR)

标签: pythonjson

解决方案


您可以json.load用于加载文件。在第 515716 行,添加双引号包裹密钥。希望能帮到你


推荐阅读