Используя библиотеку OData October '11 CTP для сериализации записи с использованием v3, я получаю следующее:
{
"d":{
"__metadata": {
"id":"http://dev.foo.bar/Statuses(7)",
"type":"Presentation.Status"
},
"Description":"Testing..."
}
}
В спецификации v3 приведен следующий пример:
DataServiceVersion: 3.0
{
"d": {
"__metadata": {
"uri": "Customers(\'ALFKI\')",
"type": "SampleModel.Customer",
....
В спецификации используется _ metadata / uri, а в Libary используется " _metadata / id".В разделе [2.2.6.3.3 Тип объекта (как объект JSON)] спецификация гласит:
Сериализация нотации объекта JavaScript (JSON) экземпляра EntityType МОЖЕТ <58> включать имя /пара значений с именем "_ метаданные".Эта пара имя / значение не является данными, но вместо этого, согласно соглашению, определенному в этом документе, указывает метаданные для экземпляра EntityType, который представляет объект JSON.Порядок этой пары имя / значение по отношению к другим парам имя / значение, которые представляют свойства, определенные для типа сущности, не имеет значения.В версии 1.0 и версии 2.0 протокола OData значение свойства " _metadata" содержит семь пар имя / значение: "uri", "type", "etag", "edit_media", "media_src", "media_etag "и" content_type ".В версии 3.0 протокола OData добавлены еще три пары имя / значение: «свойства», «действия» и «функции».Порядок этих пар имя / значение не имеет значения.Значение пары имя / значение "uri" ДОЛЖНО быть каноническим URI, идентифицирующим экземпляр EntityType, представленный объектом JSON.
Похоже, что текущий CTP библиотеки OData неправильно генерирует "id", где он должен излучать" uri ", как uriNVP - как определено следующим образом:
metadataNVP = quotation-mark "__metadata" quotation-mark
name-seperator
begin-object
( uriNVP
....
uriNVP = quotation-mark "uri" quotation-mark
name-seperator
quotation-mark resourcePath quotation-mark
Является ли библиотека просто неверной - или я что-то упускаю или неправильно ее использую?