REST: Как сделать JSON более кратким - PullRequest
0 голосов
/ 25 декабря 2011

json - это полезный медиатип при разработке спокойного URL-адреса ... но в наши дни проблема меня сильно озадачивает, я напрямую преобразовываю класс модели сущностей в строку json и помещаю их в ответ ... но многие модели сущностей имеют однуотношение многие, многие к одному с другими моделями ... такими как:

class Model{
....
List<model2> model2s;
}
class Model2{
...
List<Model3> model3s;
}
...

я конвертирую экземпляр модели в строку json ... длина этой строки json должна быть ужасной ... как избежатьэто ... Спасибо

Ответы [ 2 ]

0 голосов
/ 25 декабря 2011

Размер JSON является действительной проблемой, особенно если JSON анализируется / используется javascript, запущенным в браузере с медленным (er) механизмом javascript (например, более ранние IE).Даже если данные сжимаются по проводам, это влияет только на доставку.Полное сообщение по-прежнему необходимо проанализировать в браузере.

Несколько правил / предложений:

Сначала уменьшите объем данных - отправляйте только те данные, которые нужны принимающему приложению.В частности, в вашем случае отфильтруйте все экземпляры model2s и model3s, которые не нужно видеть приложению-потребителю.

Если вы не можете отфильтровать экземпляры, уменьшите объем данных вкаждый экземпляр - не кодируйте каждое поле в JSON.Например, если model2s имеет четыре поля: name, date, summary и author, а клиентскому приложению нужны только name и date, то отправляются только name и date.

Наконец, удалите избыточность из данных.Если данные денормализованы и в Model2 есть копии данных, которые по праву принадлежат в Model (например), отправляйте только эти данные с представлением Model.Аналогичным образом, если соотношение между Model2 и Model3 много-ко-многим, отправьте только один экземпляр данных model3 и реализуйте схему ссылок (как, например, YAML) для копий.

0 голосов
/ 25 декабря 2011

Вы не можете, если вы не решите выборочно вернуть ваши данные, основываясь на некоторой логике. Представьте, что вы возвращаете это как XML, это будет еще более «ужасно»? Или я полностью пропустил твой вопрос?

На другой ноте. Почему бы вам беспокоиться о сложности результирующего JSON. В любом случае он будет проанализирован автоматически (либо JavaScript, либо клиентом вашего веб-сервиса).

Если размер данных является вашей проблемой, вы можете сжать свой ответ.

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