2010-01-27 52 views
24

我在客戶端和Django服務器之間發送信息,並且我想使用JSON來實現此目的。我正在發送簡單的信息 - 字符串列表。我試着用django.core.serializers,但是當我這樣做,我得到了將列表序列化爲JSON

AttributeError: 'str' object has no attribute '_meta' 

看來,這隻能爲Django的對象使用。我如何序列化簡單的Python對象?

+2

您能否包含您實際使用的產生此錯誤的實際代碼片段? – 2010-01-27 14:45:52

回答

46

您可以使用純Python來做到這一點:

import json 
list = [1, 2, (3, 4)] # Note that the 3rd element is a tuple (3, 4) 
json.dumps(list) # '[1, 2, [3, 4]]' 
+2

哦,它是2.6中的一個新模塊,我不必使用simplejson。非常感謝:-) – gruszczy 2010-01-27 14:57:55

+0

我根本無法解析轉儲的JSON文件,因爲在此文件中,JSON_ARRAY是另一個JSON_ARRAY的直接子節點。 – 2014-05-22 18:05:42

4

如果使用Python 2.5,您可能需要導入simplejson

try: 
    import json 
except ImportError: 
    import simplejson as json 
2

是的,但後來你會怎麼做對的Django對象?簡單的json往往會窒息他們。

如果對象是單個模型對象(不查詢集,例如),我偶爾會存儲模型對象類型和PK,就像這樣:

seralized_dict = simplejson.dumps(my_dict, 
        default=lambda a: "[%s,%s]" % (str(type(a)), a.pk) 
        ) 

反序列化,你可以重建對象引用與model.objects.get()。如果您對dict所存儲的類型的對象細節感興趣,這並沒有什麼幫助,但是如果您只需要知道哪個對象參與其中,則它是有效的。