Как обновление от подробного JSON до JSON light повлияет на человека, который смотрит только на данные, а не на метаданные?



Может ли кто-нибудь кратко объяснить мне на простом английском языке с несколькими пунктами маркера, каковы основные различия между verbose JSON и JSON light для служб данных WCF? Я нашел документ под названием "JSON light at a glance" от Microsoft,но в нем 23 страницы! Меня не интересуют метаданные, меня интересуют только данные. Я знаю, что JSON light сбрасывает обертку "d". Что-нибудь еще? Передаются ли типы данных (даты, логические значения и т. д.) В одном и том же формате?



EDIT: я понимаю, что теперь Microsoft теперь называть JSON light просто "JSON", а JSON verbose-это старый, устаревший стандарт. Я называю новый стандарт "JSON light" для ясности.

493   1  

1 ответ:

"меня не волнуют метаданные; меня волнуют только данные"

Это на самом деле отличный слоган для JSON Light в целом:)

Основной принцип JSON light заключается в том, что серверы могут сократить количество ненужных метаданных в полезной нагрузке. Если клиенту требуется определенный бит метаданных (например, URL-адрес, который он должен использовать для редактирования сущности), клиент может создать этот URI сам на основе общих соглашений OData URI.

Клиент может контролировать количество метаданных на сервере. следует включить в полезную нагрузку, запросив один из трех различных уровней метаданных:

  • "application/json; odata=fullmetadata" для клиентов, которым необходимо использовать метаданные и у которых нет способа вычислить их самостоятельно
  • "application/json; odata=minimalmetadata" для клиентов, которые используют метаданные, но сами прекрасно их вычисляют
  • "application/json; odata=nometadata" для клиентов, которые не заботятся о каких-либо метаданных вообще

Если вы пишете клиенту это действительно не заботится о каких-либо метаданных вообще (где метаданные включают ссылки редактирования, типы сущностей, типы свойств, потоковую информацию, свойства навигации и т. д.), то вы можете запросить "application/json; odata=nometadata", и вы просто получите обратно пакет свойств.

Даже если вы не заботитесь о метаданных, есть много небольших различий между JSON Verbose и JSON Light. Я бы настоятельно рекомендовал полагаться на библиотеку для этого, если вы находитесь на языке, где он доступен (например, в .NET есть клиент WCF Data Services, а в Javascript-datajs или jaydata). Вот список из нескольких отличий от моей головы:

  • в OData v2 даты и время могут быть представлены в формате на основе тиков (например, "lastUpdated": "\/Date(1240718400000)\/"), но в v3 JSON поддерживается только ISO 8601 (например,, "1992-01-01T00:00:00")
  • на полезных нагрузках результатов больше нет оболочки "d".
  • , а не "результаты" обертка для результаты сбора, сейчас "значение" обертка
  • вместо" _ _ count "для inline count, JSON Light использует" odata.граф "
В качестве примера рассмотрим различия в полезной нагрузке, создаваемой этим запросом:

Http://services.odata.org/v3/OData/OData.svc/Products?$inlinecount=allpages&$top=2&$format=application/json;odata=verbose

Против этого:

Http://services.odata.org/v3/OData/OData.svc/Products?$inlinecount=allpages&$top=2&$format=application/json;odata=nometadata

Comments

    Ничего не найдено.