Я сейчас пишу API, но на этот раз клиентская сторона - третья сторона.
К счастью, это хорошо задокументировано, но у меня есть 1 конкретная проблема. Клиент ожидает JSON, как это:
{ "results":[ { "Id":"2C9E76EF-2532-4CA5-B4C6-03E39A31867A", "Code":1, "Name":"Optimizers B.V.", "VatCode":"96541122", "ChamberOfCommerceCode":"28084551", "LanguageCode":"NL", "Discount":2.35, "CustomerManager":"Robin van Halen", "PriceList":"7208812F-EEDA-4345-B3C6-1F1A960558C1", "PaymentCondition":"7BA77586-3A3A-4D07-8DB8-2188F48BD68A", "VatLiable":true }}
Я использую OData, так как мне нужно было использовать OData для опций с запросом. Тем не менее, мой набор результатов совсем другой:
{
"@odata.context": "http://localhost:52973/odata/$metadata#Customers",
"value": [ { "Id":"2C9E76EF-2532-4CA5-B4C6-03E39A31867A", "Code":1, "Name":"Optimizers B.V.", "VatCode":"96541122", "ChamberOfCommerceCode":"28084551", "LanguageCode":"NL", "Discount":2.35, "CustomerManager":"Robin van Halen", "PriceList":"7208812F-EEDA-4345-B3C6-1F1A960558C1", "PaymentCondition":"7BA77586-3A3A-4D07-8DB8-2188F48BD68A", "VatLiable":true }}
Разница
"@odata.context": "http://localhost:52973/odata/$metadata#Customers",
"value": [ ....
Я задал вопрос в службу поддержки, и они ответили, что мне нужно изменить значение на результаты, чтобы оно работало. Но как мне это изменить? Я не совсем уверен, как это сделать.
Я попробовал какой-нибудь грязный хак, как это:
public IQueryable<Customer> Get()
{
var AllCusts = GetAllCustomers(); //this is of type IQueryable
//Test in order to change value to results
var x = JsonConvert.SerializeObject(AllCusts, Formatting.Indented);
var xyz = JsonConvert.DeserializeObject<List<Customer>>(x.Replace("value", "Results"));
var asQuery = xyz.AsQueryable();
return asQuery;
}
Но, к сожалению, набор результатов остается прежним.