Есть ли способ указать в OData-запросе, что вместо возвращаемых пар имя/значение необработанный массив должен быть возвращен вместо этого? Например, если у меня есть запрос OData, что приводит к следующему:Предоставляет ли протокол OData способ преобразования массива объектов в массив необработанных значений?
{
"@odata.context": "http://blah.org/MyService/$metadata#People",
"value": [
{
"Name": "Joe Smith",
"Age": 55,
"Employers": [
{
"Name": "Acme",
"StartDate": "1/1/1990"
},
{
"Name": "Enron",
"StartDate": "1/1/1995"
},
{
"Name": "Amazon",
"StartDate": "1/1/1999"
}
]
},
{
"Name": "Jane Doe",
"Age": 30,
"Employers": [
{
"Name": "Joe's Crab Shack",
"StartDate": "1/1/2007"
},
{
"Name": "TGI Fridays",
"StartDate": "1/1/2010"
}
]
}
]
}
Что я могу добавить к запросу, чтобы вместо этого получить обратно:
{
"@odata.context": "http://blah.org/MyService/$metadata#People",
"value": [
{
"Name": "Joe Smith",
"Age": 55,
"Employers": [
[ "Acme", "1/1/1990" ],
[ "Enron", "1/1/1995" ],
[ "Amazon", "1/1/1999" ]
]
},
{
"Name": "Jane Doe",
"Age": 30,
"Employers": [
[ "Joe's Crab Shack", "1/1/2007" ],
[ "TGI Fridays", "1/1/2010" ]
]
}
]
}
В то время как я, очевидно, мог бы сделать преобразование на стороне клиента, в моем случае имена полей очень большие по сравнению с данными, и я предпочел бы не передавать все эти имена по кабелю и не проводить циклы процессора на клиенте, выполняющем преобразование. Прежде чем я придумаю свои собственные параметры, чтобы указать, что формат должен быть таким, каким я хочу, я хотел проверить, не был ли стандартизированный способ сделать это.
В нужной продукции вы делаете массивы разные типы значений. Обычно это не то, что я сделал бы. На мой взгляд, это повредит вашему API. Это приведет к уменьшению количества отправленных данных, да. Однако это также приведет к менее понятному API, в котором клиентам придется делать предположения (первое поле массива в Мастере работодателей должно быть именем, если оно не похоже на дату). Рядом с этим с ним сложно работать, клиент не может просто получить имя или StartDate работодателя, задав его особым запросом. – ophychius
Согласен; имейте в виду, что я ищу способ явно запросить этот формат из стандартного API OData с помощью запроса, чтобы * не * сделать этот формат частью моего самого API, то есть тот же клиент, который определяет этот формат, будет один интерпретирует результаты. FWIW, мой фактический прецедент состоит из значений X, Y для диаграммы; вместо массива таких объектов, как {timestamp: 12345, value: 77}, я бы хотел получить массив кортежей вроде [12345,77]. –