2011-04-12 76 views
0

我有一個Android應用程序,它最初將一些字符串以json格式發佈到python cgi腳本中,這些腳本一切正常。問題是,當json對象包含列表,然後python(使用simplejson)時,它仍然把它們視爲一個大字符串Python從POST方法中抓取JSON

這是一個文本轉儲的JSON一旦達到蟒蛇之前我解析它:
{「Prob1」:「[1,2,3]」,「Name」:「aaa」,「action」:1,「Prob2」:「[20,20,20]」,「Tasks」:「 1任務,2任務,3任務]「,」說明「:」「}

如果我們看一下」任務「鍵,後面的列表顯然是單個字符串,並且所有元素都被視爲一個字符串每個元素周圍沒有引號)。 prob1和prob2是一樣的。行動,名稱等都很好。我不確定這是不是Python的期望,但我猜不是?

以防萬一機器人數據是罪魁禍首我添加引號這樣該ArrayList各元件周圍:
Tasks.add(「‘‘+ row.get(1)的ToString()+’’」) ;而不是Tasks.add(row.get(1).toString());

在網絡服務器它現在接收作爲
{ 「Prob1」: 「[1,2,3]」, 「名稱」: 「AAA」, 「行動」:1, 「Prob2」:「[20, 20,20]「,」Tasks「:」[\「1 task \」,\「2 task \」,\「3 task \」]「,」Description「:」「}

但我仍然得到一樣的問題;當我在循環中遍歷「Tasks」時,它遍歷每個單獨的字符,就像整個事物是一個字符串一樣:/

因爲我不知道json結構在Python到達之前應該是什麼樣子,我想知道這是Android發送數據還是我的Python解釋它的探測器。但從該腳本的外觀來看,我一直在猜測它是發送的。

在Android應用程序中,我發送一個包含「Tasks」和相關ArrayList作爲關鍵值對之一的大JSONObject ...這是正確的嗎?還是應該JSONArray在任何地方參與?

感謝任何幫助大家,我是新來的整個JSON的東西,以及對Android/Java(只有真正的新手在Python太..)。如果有人需要它,我可以張貼額外的代碼,我只是不想延長的帖子太多

編輯:

當我添加
json_data = json_data.replace(R「「[」,」 [ ')
json_data = json_data.replace(R']'」, ']')
json_data = json_data.replace(R '\ 「', '」')
到它的工作蟒!!!!但這讓我覺得有點討厭,只是紙上談兵。

回答

1

任務只是一個大字符串。要成爲一個有效的列表,它必須是[「1任務」,「2任務」,「3任務」]


Prob1和Prob2也是如此。要成爲一個有效的列表,方括號不應該用引號引起來。

+0

是啊這就是我認爲的問題,然後是爲什麼Android發送他們作爲一個字符串...我試過一個快速的黑客只是做一個替換[[和]「[和]在Python中,但然後simplejson.loads失敗,錯誤 – alsandair 2011-04-12 05:50:30

+0

不幸的是我只在Androiding一個星期左右。希望別人可以幫助。 – 2011-04-12 05:54:10

+0

哈耶我一直在玩着大約2周,這有點奇怪...當我添加json_data = json_data.replace(r'「[','[') \t json_data = json_data.replace(r']'',']') \t json_data = json_data.replace(r'\」' ,''')到python它工作!但是這讓我覺得有點討厭...... – alsandair 2011-04-12 05:56:13