如何从WCF服务返回干净的JSON?
如何从WCF服务返回干净的JSON?
我正在尝试从一个WCF服务返回一些JSON。该服务仅从我的数据库返回一些内容。我可以获取数据。然而,我对我的JSON格式有些担忧。目前,返回的JSON格式如下:
{"d":"[{\"Age\":35,\"FirstName\":\"Peyton\",\"LastName\":\"Manning\"},{\"Age\":31,\"FirstName\":\"Drew\",\"LastName\":\"Brees\"},{\"Age\":29,\"FirstName\":\"Tony\",\"LastName\":\"Romo\"}]"}
实际上,我希望我的JSON格式尽可能地干净整洁。我相信(可能我错了),同样的结果集在干净的JSON中应该像这样:
[{
"Age": 35,
"FirstName": "Peyton",
"LastName": "Manning"
}, {
"Age": 31,
"FirstName": "Drew",
"LastName": "Brees"
}, {
"Age": 29,
"FirstName": "Tony",
"LastName": "Romo"
}]
我不知道“d”是从哪里来的。我也不知道为什么会插入转义字符。我的实体类如下所示:
[DataContract] public class Person { [DataMember] public string FirstName { get; set; } [DataMember] public string LastName { get; set; } [DataMember] public int Age { get; set; } public Person(string firstName, string lastName, int age) { this.FirstName = firstName; this.LastName = lastName; this.Age = age; } }
负责返回内容的服务定义如下:
[ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class TestService { [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json)] public string GetResults() { Listresults = new List (); results.Add(new Person("Peyton", "Manning", 35)); results.Add(new Person("Drew", "Brees", 31)); results.Add(new Person("Tony", "Romo", 29)); // 将结果序列化为JSON DataContractJsonSerializer serializer = new DataContractJsonSerializer(results.GetType()); MemoryStream memoryStream = new MemoryStream(); serializer.WriteObject(memoryStream, results); // 返回序列化为JSON的结果 string json = Encoding.Default.GetString(memoryStream.ToArray()); return json; } }
如何从WCF服务返回“干净”的JSON?
谢谢!
问题:如何从WCF服务返回干净的JSON?
原因:WCF服务默认返回的JSON中会包含额外的"[d]",需要修改默认行为。
解决方法:通过在web.config文件中设置bindingBehavior为<webHttp>来实现。此设置将返回干净的JSON,覆盖了默认行为。可以参考以下博客文章获取更多信息:http://blog.clauskonrad.net/2010/11/how-to-expose-json-endpoint-from-wcf.html
问题的出现原因:
如果想要从WCF服务返回清晰的JSON,而又不想在服务类中硬编码属性,我们需要找到一种解决方法。
解决方法:
在行为配置中使用<webHttp defaultOutgoingResponseFormat="Json"/>
。
以下是一种可能的解决方案:
WCF服务是一种用于构建分布式系统的强大工具。然而,在返回JSON数据时,有时候我们可能希望得到一个干净整洁的JSON对象,而不是带有额外属性或格式的JSON。
下面介绍一种方法,可以帮助我们从WCF服务返回干净的JSON。
解决方法是在行为配置中使用<webHttp defaultOutgoingResponseFormat="Json"/>
。这个配置的作用是将默认的输出响应格式设置为JSON。
以下是一个示例:
通过将上述配置添加到WCF服务的行为配置中,我们可以确保返回的JSON数据是干净、整洁的。
通过在WCF服务的行为配置中添加<webHttp defaultOutgoingResponseFormat="Json"/>
,我们可以从WCF服务返回干净的JSON数据,而不需要在服务类中硬编码属性。这种方法可以帮助我们更好地处理JSON数据,并提供更好的用户体验。