你有正确的设置根据需要返回对象。问题是你没有返回正确的对象。
预期的json {"id":"value"}
是对象的json表示。您要返回的json是列表的json表示。
你要返回的json是一个列表,因为那是你的方法返回的。正如@NateBarbettini回答,你需要改变你的方法返回。
您的方法返回的值是string[]
,它是一个字符串数组,将被格式化为JSON列表。你需要改为返回一个对象。您可以使用建议的@NateBarbettini之类的匿名对象,也可以返回您编写的自定义类。
产生结果,则类:
public class FooViewModel
{
public string Id {get; set;}
}
会做的伎俩。
现在的问题是套管已关闭。 FooViewModel.Id使用PascalCase,它是C#中的标准,但json使用camelCase。
- 可以打破C#约定,并使用驼峰属性名称
- 可以调整Startup.cs或Global.asax.cs中你JsonSerialization设置使用驼峰:
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
就可以工作。
来源
2016-12-15 17:11:51
Sam