Как обновление от подробного 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" для ясности.
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