Вы имеете право установки для возврата объекта по мере необходимости. Проблема в том, что вы не возвращаете правильный объект.
Ожидаемый json {"id":"value"}
представляет собой json-представление объекта . Json, который вы возвращаете, представляет собой json-представление списка .
Вы возвращаетесь, это список, потому что это то, что возвращает ваш метод. Как ответил @NateBarbettini, вам нужно изменить то, что возвращает ваш метод.
Значение, возвращаемое вашим методом, равно string[]
, который представляет собой строковый массив, который будет отформатирован в списке JSON. Вам нужно вместо этого вернуть объект. Вы можете использовать анонимный объект, например, @NateBarbettini, или вы можете вернуть пользовательский класс, который вы пишете.
Для получения результата, класс:
public class FooViewModel
{
public string Id {get; set;}
}
бы сделать трюк.
Проблема, с которой вы сейчас сталкиваетесь, это корпус отключен. FooViewModel.Id использует PascalCase, который является стандартным для C#, но json использует camelCase.
- Вы можете разорвать C# соглашение и использовать CamelCase имена свойств
- Вы можете настроить JsonSerialization Настройку в Startup.cs или Global.asax.cs использовать верблюжий:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
где config
это ваш HttpConfiguration. Вы можете увидеть это в вашем коде, как GlobalConfiguration.Configuration
- CamelCasePropertyNamesContractResolver
- Configuring WebApi
- Вы можете использовать JsonPropertyAttribute явно установить, что имя JSON вашей собственности должно быть.
Пример
[JsonProperty("id")]
public string Id {get; set;}
Независимо от того, что вы делаете, вы должны будете изменить тип возврата вашего метода из IEnumerable<string>
. Мне нравятся особенности, поэтому я бы установил тип возвращаемого значения на то, что вы называете своим классом, но оставить его на object
будет работать нормально.