0

我发现 python 有一些奇怪的行为,但我不明白为什么。

这就是我创建项目和列表的方式:

def createItemJson(self,id,url):
    ret={}
    ret['id']=id
    ret['url']=url
    return ret


def createListJson(self,i):
    ret_l = []
    for i in range(0,i,1):
        ret_l.append(self.createItemJson(i, i))
    return ret_l

这是 3 个元素列表的输出:

[{'url': 0, 'id': 0}, {'url': 1, 'id': 1}, {'url': 2, 'id': 2}]

如果我使用这个字符串并在 shell A 中执行:

for v in data

我可以打印 3 个对象。NBlen(data)是3。

现在我将这些数据作为文本字段存储在数据库中(正确吗?)。当我检索对象时,我得到len的值为63

基本上 Django 将其视为一个字符串。我能做些什么?我试图做 json.load 但它不起作用。

4

1 回答 1

1

您显示的示例中没有 JSON。你有一本 Python 字典。如果您随后“将其存储在文本字段中”(请注意,准确显示您的操作方式会很有帮助),您可能只是将其作为字符串转储到该字段中。它仍然不是 JSON,它现在是 Python dict 的字符串表示形式,这并不完全相同。json.load将“不起作用”(再一次,确切的错误消息会有所帮助),因为它不是 JSON。

您可以json.dumps(my_dict)在将其存储到数据库之前以及json.loads()在退出时尝试使用。或者,使用您可能在 Google 快速搜索中找到的众多 JSONField 实现之一。

于 2012-11-19T16:32:13.137 回答