首页 前端知识 json.loads处理文本报错 json.decoder.JSONDecodeError:expecting value: line1 column 2

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

2024-06-17 09:06:23 前端知识 前端哥 28 177 我要收藏

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

    • 报错信息
    • 待处理的文本
    • 解决方法
    • 错误原因
    • json用法
      • 主要的区别

报错信息

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']
>>>

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 数据与文件进行交互。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/12522.html
标签
评论
发布的文章

jQuery基本使用

2024-06-24 02:06:16

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!