【问题标题】:Getting error while using json.load function使用 json.load 函数时出错
【发布时间】:2021-12-08 15:16:14
【问题描述】:

尝试将以下字符串转换为 JSON 对象时,出现错误。我该如何解决?

text = '{ "MonitorGroupGuid": "e8b20230-70b6-4348-36f3e3f", "Description": "Root CA", "IsAll":False}'
JsonObject = json.loads(text)

输出:

    x = json.loads(x)
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.8/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 98 (char 97)

【问题讨论】:

  • 用“False”替换 False 解决了这个问题。但我需要保持我的字符串格式。

标签: json python-3.x


【解决方案1】:

您可以简单地使用 "" 表示 False 使用 0/1,但如果您希望它作为 bool 对象,请使用不带引号的 false

  • “False”数据类型是字符串

  • 只是假数据类型 bool

    text = '{“MonitorGroupGuid”:“e8b20230-70b6-4348-36f3e3f”,“描述”:“根 CA”,“IsAll”:“False”}' JsonObject = json.loads(文本) print(JsonObject)#{'MonitorGroupGuid': 'e8b20230-70b6-4348-36f3e3f', 'Description': 'Root CA', 'IsAll': 'False'}

【讨论】:

    【解决方案2】:

    False 替换为false(不带引号)

    text = '{ "MonitorGroupGuid": "e8b20230-70b6-4348-36f3e3f", "Description": "Root CA", "IsAll":false}'
    JsonObject = json.loads(text)
    print(JsonObject) #{'MonitorGroupGuid': 'e8b20230-70b6-4348-36f3e3f', 'Description': 'Root CA', 'IsAll': False}
    

    【讨论】:

    • 与此解决方案相关的问题仍然存在。 Python 仅将 False 识别为布尔值,而不是 false。
    • 如果你尝试print(JsonObject["IsAll"] is False),它会打印True。所以我认为该值被正确识别。
    猜你喜欢
    • 2015-02-09
    • 2016-05-05
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多