JSON объект как получить параметр - PullRequest
1 голос
/ 09 декабря 2010

Я пишу API для базы данных Монго.Мне нужно передать объект JSON в качестве параметра GET:

example.com / api / obj / list / 1 /? Find = {"foo": "bar"}

Как мне организовать это лучше?

Я думал об использовании JSON-подобных объектов без кавычек и пробелов, например:

{$or:[{a:foo+bar},{b:2}]}

Так есть ли инструменты для его анализа в Python/ Django?

1 Ответ

3 голосов
/ 09 декабря 2010

Ничего страшного, если объекты JSON не слишком велики, они не содержат конфиденциальных данных (это ужасно, если вы видите ваш пароль в истории браузера), и вы их URL-адреса избегаете.

К сожалению, вы должны использовать ярлыки, если вы хотите иметь удобочитаемый параметр JSON.Все скобки JSON ({, }, [, ]) рекомендуются для экранирования.Вам не нужно избегать их, но вы рискуете, если не делаете этого.Более раздражающим является :, который вездесущ в JSON, и должен быть экранированным.

Если вы хотите, чтобы строки запроса читались человеком, разумным решением будет явное кодирование всех параметров запроса.,Компромисс, который вполне может сработать, - это распаковать объект JSON верхнего уровня в явные параметры запроса, каждый из которых остается в JSON-кодировке.Пройдя немного дальше, вы можете отбросить все оставшиеся разделители верхнего уровня, например:

JSON: {"foo":"bar", "items":[1, 2, 3], "staff":{"id":432, "first":"John", "last":"Doe"}}
Query: foo=bar&items=1,2,3&staff="id"%3A432,"first"%3A"John","last"%3A"Doe"

Поскольку вы знаете, что foo - это строка, items - это массив, а staff - объект, вы можете выполнить повторную гидратацию.синтаксис JSON правильно перед отправкой лота в анализатор JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...