当前位置:   article > 正文

json.loads处理文本报错 json.decoder.JSONDecodeError:expecting value: line1 column 2_json.decoder.jsondecodeerror: expecting value: lin

json.decoder.jsondecodeerror: expecting value: line 1 column 2 (char 1)

json.loads处理文本报错 json.decoder.JSONDecodeError:expecting value: line1 column 2

报错信息

json.decoder.JSONDecodeError: expecting value: line1 column 2 (char 1)

待处理的文本

content = “[‘单词1’, ‘单词2’]”

解决方法

将原来的处理方法
text = json.loads(content)

替换为eval
text = eval(content)

错误原因

这个错误是因为在解析JSON数据时发生了问题。JSONDecodeError表示解码器期望在特定位置找到一个有效的JSON值,但实际上找到了无效的字符或者缺少了值。但是正常情况下json是可以解析数组的,由此我推测该问题可能与单引号和双引号有关系。

于是验证一下,果然是这样:

>>> import json

>>> content = "['text1', 'text2']"
>>> print(json.loads(content))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)

>>> content = '["text1", "text2"]'
>>> print(json.loads(content))
['text1', 'text2']
>>>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

json用法

  • json.dumps():用于将 Python 对象序列化为 JSON 字符串。它接受一个 Python 对象作为参数,并返回一个对应的 JSON 字符串。例如,json.dumps(obj) 可以将一个 Python 字典或列表转换为 JSON 字符串。

  • json.dump():与 json.dumps() 类似,但是它将序列化的 JSON 数据直接写入文件(或类文件对象)。它接受两个参数:要序列化的 Python 对象和要写入的文件(或类文件对象)。例如,json.dump(obj, file) 将 Python 对象序列化为 JSON 字符串,并将其写入文件中。

  • json.loads():用于将 JSON 字符串解析为 Python 对象。它接受一个 JSON 字符串作为参数,并返回一个对应的 Python 对象。例如,json.loads(json_str) 将一个 JSON 字符串解析为 Python 字典或列表。

  • json.load():与 json.loads() 类似,但是它从文件(或类文件对象)中读取 JSON 数据,并将其解析为 Python 对象。它接受一个文件(或类文件对象)作为参数,并返回解析后的 Python 对象。例如,json.load(file) 从文件中读取 JSON 字符串,并将其解析为 Python 对象。

主要的区别

dumps() 和 loads() 是将 JSON 数据与 Python 对象之间进行转换的函数,可以在内存中直接操作 JSON 字符串和 Python 对象。
dump() 和 load() 则是在文件(或类文件对象)上直接进行读写操作,将 JSON 数据与文件进行交互。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/471962
推荐阅读
相关标签
  

闽ICP备14008679号