python - 嵌入式 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有效。
为什么我的解析失败了?我应该如何解决它?
解决方案
此 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。