【发布时间】:2017-07-24 14:21:05
【问题描述】:
我有 WCF Rest 服务。我的 Datacontract 对象是
[DataContract(Name = "Z")]
public class User
{
[DataMember(Name = "A", EmitDefaultValue = false)]
public int UserName{ get; set; }
[DataMember(Name = "B", EmitDefaultValue = false)]
public int Address{ get; set; }
}
当我使用服务(Rest Call)时,我得到的响应是
{"A" : "TestName", "B": "India"}.
但我想要这样的回应
{"userName" : "TestName", "Address": "India"}.
我怎样才能得到以上的回应。我不想删除模型对象的数据注释,因为我的老客户正在使用 WCF 服务。
提前致谢。
更新
我试过下面的代码
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.Remove(config.Formatters.JsonFormatter);
config.Formatters.Clear();
config.Formatters.Add(new NewtonsoftJsonFormatter());
*NewtonsoftJsonFormatter 扩展自 MediatypeForamtter 但是没有用。它仍然采用默认的 .net 序列化程序。有什么帮助吗?
【问题讨论】:
-
从 Newtonsoft.Json 添加 [JsonProperty("userName")] 属性
-
我试过了...但是没用...需要在global.asax应用启动中添加吗?
-
不,你不知道。尝试删除数据成员并仅使用 JsonProperty
-
我两者都需要。因为我的桌面应用程序正在使用 WCF 服务。我们正在开发使用 WCF Rest 的 Angular 应用程序。但是 newtonsoft 文档。说我们可以同时使用两者。 “Json.NET 属性优先于标准 .NET 序列化属性(例如,如果 JsonPropertyAttribute 和 DataMemberAttribute 都存在于属性上并且都自定义名称,则将使用来自 JsonPropertyAttribute 的名称)。” 否则是否可以将 global.asax 中的默认序列化程序分配给 JSON.Net。因为当我使用 jsonconvert 手动序列化时输出是正确的。考虑 JsonProperty 名称。
-
stackoverflow.com/questions/14591750/… 此链接可以帮助您覆盖默认的 json 序列化程序。虽然它适用于 asp.net mvc 但它应该有所帮助。