我想将数据库结果集转换为json。
我使用json.dumps()
它转换为"{key:\"value\"}"
但我不想在字符串和反斜杠周围引用。我如何转换为{key:"value"}
这是我的代码。
模型
class DeviceDetail(models.Model):
deviceId = models.CharField(max_length=200)
payload = models.CharField(max_length=2000)
查看
data = json.dumps(list(DeviceDetail.objects.filter(deviceId=deviceId).values('deviceId','payload')))
HttpResponse(data)
响应:
[
{
"deviceId":"10",
"payload":"{key:\"value\"}"
},
{
"deviceId":"10",
"payload":"{key:\"value\"}"
},
{
"deviceId":"10",
"payload":"\"{key:\\\"value\\\"}\""
},
{
"deviceId":"10",
"payload":"{key:\"value\"}"
}
]
没有json.dumps()
{'deviceId': u'10', 'payload': u'{key:"value"}'}
答案 0 :(得分:2)
您的payload
值已编码字符串,并且这些值再次编码为JSON字符串。
如果你想要那些是JSON对象,你首先必须将它们解码为Python对象:
data = json.dumps([
{'deviceId': dd['deviceId'], 'payload': json.loads(dd['payload'])}
for dd in DeviceDetail.objects.filter(deviceId=deviceId).values('deviceId','payload')
])
我假设这些值是实际的JSON编码值。
如果它们不是 JSON编码值,则不清楚您想要什么。作为字符串,它们的JSON编码是完全正确的,并且值中的引号必须使用反斜杠进行转义。