2013-06-18 64 views
1

我發佈這樣的數據使用郵遞員休息客戶端。如何轉換unicode原python類型

{ 'name':"xyz", 
    'data':[{'age': 0, 'foo': 1}, {'age': 1, 'foo': 1}] 
} 

我將數據作爲unicode創建,所以我無法從這種類型的數據中獲取字典值。

我在做什麼

def post(self, request): 
    d = request.DATA 
    # here prints right data if we "print d" 
    # but d is unicode so we could not access dictionary 
    for item in d['data]: 
     print item 

我怎麼Unicode轉換成列表,以及列表項的字典,所以我可以訪問詞典詞條。

注意我正在使用django rest框架。

+0

確保你不小心通過郵遞員發佈一個字符串。如果請求是有效的JSON並且Content-Type正確地設置爲'application/json',那麼訪問'request.DATA'將返回解碼後的python primatives(在這種情況下是值的字典) –

+0

@TomChristie我有在表單數據中設置這些值。 –

回答

1

您可以使用ast.literal_eval

>>> from ast import literal_eval 
>>> data = u'{ \'name\':"xyz", \'data\':[{\'age\': 0, \'foo\': 1}, {\'age\': 1, \'foo\': 1}]}' 
>>> dic = literal_eval(data) 
>>> dic['data'] 
[{'age': 0, 'foo': 1}, {'age': 1, 'foo': 1}] 
>>> 
+0

謝謝@Ashwini。現在它工作正常。 –