2011-04-12 62 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