Python захватывает JSON из метода POST

#python #android #json

#python #Android #json

Вопрос:

У меня есть приложение для Android, которое изначально отправило некоторые строки в формате json в cgi-скрипт python, и все это отлично сработало. Проблема в том, что когда объект json содержит списки, то python (используя simplejson), когда он их получает, все еще обрабатывает их как большую строку

Вот текстовый дамп json, как только он попадает в python, прежде чем я его проанализирую:
{«Prob1″:»[1, 2, 3]»,» Имя»:»aaa»,»действие»: 1,»Prob2″:»[20, 20, 20]»,» Задачи»:»[1 задача, 2 задачи, 3 задачи]»,»Описание»:»»}

если мы посмотрим на ключ «Задачи», список после явно представляет собой единую строку, все элементы которой обрабатываются как одна строка (т. Е. без кавычек вокруг каждого элемента). это то же самое для prob1 и prob2. действие, имя и т.д. — все в порядке. Я не уверен, ожидает ли это python, но я предполагаю, что нет?

На всякий случай, если виноваты данные Android, я добавил кавычки вокруг каждого элемента arraylist следующим образом:
Tasks.add(‘»‘ row.get(1).toString() ‘»‘); вместо Tasks.add(row.get(1).toString());

На веб-сервере теперь он принимается как
{«Prob1″:»[1, 2, 3]»,» Имя»:»aaa»,»действие»: 1,»Prob2″:»[20, 20, 20]»,» Задачи»:»[«1 задача», «2 задачи», «3 задачи»]»,»Описание»:»»}

но я все еще сталкиваюсь с той же проблемой; когда я перебираю «Задачи» в цикле, это перебирает каждый отдельный символ, как если бы все это было строкой :/

Поскольку я не знаю, как должна выглядеть структура json до того, как она попадет в Python, мне интересно, является ли это проблемой с отправкой данных Android или моим python, интерпретирующим их .. хотя, судя по внешнему виду этого скрипта, я предполагаю, что это была отправка.

В приложении Android я отправляю один большой JSONObject, содержащий «Задачи» и связанный arraylist в качестве одной из пар ключ-значение… правильно ли это? или JSONArray должен быть задействован где угодно?

Всем спасибо за любую помощь, я новичок во всем, что касается JSON, а также Android / Java (и в Python тоже только новичок ..). Я могу опубликовать дополнительный код, если кому-то это нужно, я просто не хотел слишком удлинять сообщение

Редактировать:

когда я добавляю
json_data = json_data.replace(r'»[‘,'[‘)
json_data=json_data.replace(r’]»‘,’]’)
json_data=json_data.replace(r'»‘,'»‘)
в python, это РАБОТАЕТ!!!! но это кажется мне немного неприятным и просто закрывает трещину..

Ответ №1:

Задачи -это просто большая строка. Чтобы список был действительным, он должен быть [«1 задача», «2 задачи», «3 задачи»]


То же самое касается Prob1 и Prob2. Чтобы список был допустимым, скобки не должны быть заключены в кавычки.

Комментарии:

1. Да, это то, о чем я подумал, тогда возникает вопрос, почему Android отправляет их в виде строки… Я попробовал быстрый взлом, просто заменив «[ и ]» на [и] в python, но затем simplejson.loads завершается с ошибками

2. к сожалению, я работаю на Android всего неделю или около того. надеюсь, кто-нибудь еще сможет помочь с этим.

3. Ха, да, я занимаюсь Android около 2 недель, это немного странно… когда я добавляю json_data = json_data.replace(r'»[‘,'[‘) json_data=json_data.replace(r’]»‘,’]’) json_data = json_data.replace(r'»‘,'»‘) в python, это РАБОТАЕТ!!!! но это кажется мне немного неприятным…

4. да, это неприятно, но иногда вам просто нужно использовать то, что работает, и убрать неприятности позже, как только вы лучше изучите API.