首页 > 解决方案 > 嵌入式 JSON 打破了 python 的 JSON 解析

问题描述

我尝试解析包含嵌入式 JSON 模型作为字符串属性的 JSON。这打破了 json.decoder.JSONDecodeError: Expecting ',' delimiter: line 2 column 16 (char 17)

def testJson(self):
    testJson = """{
"myModel": "{\"startDate\":\"2020-02-01T22:40:38.010Z\"}"
}"""
    myJsonDict=json.loads(testJson)

此 JSON 根据https://jsonlint.com有效。

为什么我的解析失败了?我应该如何解决它?

标签: pythonjsonpython-3.x

解决方案


此 json 无效。这是假装的json。它仅在第一级有效。

基本上,这是您展示的 json。

{"myModel": "a bunch of characters"}

我遇到过写得很糟糕的 json 数据加载器,他们的程序员没有使用正确的 json 工具,而是自己编写的,并且只考虑了一层 map。这是一个两级 json

{
  "myModel": {
    "startDate":"2020-02-01T22:40:38.010Z"
  }
}

程序员的自制工具变成了哪个

{"myModel": "{\"startDate\":\"2020-02-01T22:40:38.010Z\"}"}

那些反斜杠是转义符,基本上将“myModel”的值变成了一个长字符串。

这样当加载的数据到达我时,我必须取消转义值(即删除反斜杠)才能成为正确的 json。


推荐阅读