2015-05-20 71 views
0

我得到的request.body一個值,快譯通,它是這樣的:轉換JSON字符串在python

a = '[data={"vehicle":"rti","action_time":"2015-04-21 14:18"}]' 

type(a) == str 

我想轉換此strdict。我有這樣

b=json.loads(a) 

嘗試,但我得到的錯誤

ValueError: No JSON object could be decoded 
+2

因爲這不是json。 'data = ...'是無效的語法 – JBernardo

+2

它不是json格式。 – Zealous

+0

這是正在獲取發佈請求的數據。數據僅以這種格式提供,並將其作爲request.body使用。這就是爲什麼它會造成一個問題。 –

回答

0

這是不是您收到一個有效的JSON格式。 有效格式的類型爲:

'{"data":{"vehicle":"rti","action_time":"2015-04-21 14:18"}}' 
+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – ZdaR

+0

我對這個問題的理解是爲什麼一旦他嘗試加載字符串時,他會得到一個ValueError。我認爲這是一個有效的答案,它表明尋找可以採取任何一種方式的解決方案:如果他有控制權,或者試圖找到替代解決方案併發布具體問題(如果失敗),請實施有效答案。 – chaos

+2

這確實回答了這個問題。 OP不能JSON解碼響應的原因是因爲它不是有效的JSON。 – cpburnz

0
import json 

a = '[data={"vehicle":"rti","action_time":"2015-04-21 14:18"}]' 
r = a.split("=") 
r[:] = r[0].replace("[", ""), r[1].replace("]", "") 
d = '{"%s":%s}'%(r[0],r[1]) 
dp = json.loads(d) 
print dp 
+0

a就是這樣 - a ='[data = {'':''}]' –

+0

#nilay_gupta should work –

2

您收到的數據格式不正確JSON。在使用json模塊進行轉換之前,您必須先進行一些解析或數據轉換。

如果您知道數據始終與文字字符串'[data='開始,並一直使用該文本字符串']'結束,該數據的其餘部分是有效的JSON,你可以簡單地剝離存在問題的字符:

b = json.loads(a[6:-1]) 

如果無法保證數據的格式正確,則必須瞭解實際格式,並進行更智能的分析。