pythonjson.loads当值为json字符串时,()失败

2024-04-25 06:59:40 发布

您现在位置:Python中文网/ 问答频道 /正文

环境:python 2.7

当我从数据库读取数据时,值是{"key": "{\"subKey\":\"subValue\"}"}。我想把它转换成json,代码是:

import json

def readValueFromDb():
  return '{"key": "{\"subKey\":\"subValue\"}"}'

jsonObject = json.loads(readValueFromDb())

但也有例外:

^{pr2}$

我发现{"key": "{\"subKey\":\"subValue\"}"}和{}之间没有区别。在

顺便说一句,这个值是一个变量,所以我不能把它改成原始字符串,因为我发现它可以这样工作:

import json

jsonObject = json.loads(r'{"key": "{\"subKey\":\"subValue\"}"}')

那么,如果我想把这个值转换成json应该怎么做呢?在

我试图将'\"'替换为'\\"',但是没有找到{}。奇怪。在


Tags: key代码import数据库jsonreturn环境def
1条回答
网友
1楼 · 发布于 2024-04-25 06:59:40

如果数据库中的数据如您所述,则代码示例应如下所示:

import json

def readValueFromDb():
    return '{"key": "{\\"subKey\\":\\"subValue\\"}"}'

jsonObject = json.loads(readValueFromDb())

你的物体看起来像:

^{pr2}$

现在,可以解析内部JSON文档了。在

没有“原始字符串”,只有“原始字符串文本”。这是在代码中表示字符串的一种方法。如果你这样做(我的版本来自上面):

print(readValueFromDb())
{"key": "{\"subKey\":\"subValue\"}"}

然后你就得到了你在数据库里声称的东西。在

顺便说一句,为什么数据库中的数据不是这样的:

{"key": {"subKey": "subValue"}}

这是一种更符合逻辑的存储JSON对象的方式。在

相关问题 更多 >