【问题标题】:Formatting the Json serializarion in a .NET Web Service在 .NET Web 服务中格式化 Json 序列化
【发布时间】:2010-09-30 07:20:38
【问题描述】:

我有以下带有以下签名的 .NET Web 服务 (IServices.cs):

 [OperationContract]
        [WebInvoke(Method = "GET",
             BodyStyle = WebMessageBodyStyle.Bare,
             ResponseFormat = WebMessageFormat.Json)]
        string ReturnListOfPersons();

实现是(在 Services.svc.cs 中):

public string ReturnListOfPersons(){
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Person> listPersons= myModel.ReturnPersons();
var myList = from a in listPersons 
             select new { FirtName = a.FirstName; LastName = a.LastName};                    
string strJSon = oSerializer.Serialize(myList.Distinct());
StringBuilder sbJSon = new StringBuilder();
sbJSon.AppendFormat("{0}", strJSon);
return sbJSon.ToString();
}

上面的代码被简化了,因为我有一些连接和“尝试捕获”。

反正问题是返回的json字符串是:

"[{\"FirstName\":\"Foo\",\"LastName\":\"Bar\"},{\"Hello\":\"Foo\",\"LastName\":\"World\"}]"

嗯,这很正常,因为“toString”方法。 但是,我正在尝试获得确切的 Json 格式:开头没有双引号,当然也没有反斜杠,并且能够转义特殊字符。 所以,我会得到:

[{"FirstName":"Foo","LastName":"Bar"},{"Hello":"Foo","LastName":"World"}]

有可能吗?

谢谢,

问候

【问题讨论】:

    标签: .net web-services json serialization


    【解决方案1】:

    您的第一个示例不是有效的 JSON。这就是您在转义字符串的 Visual Studio 调试器中看到的内容。实际发送的是第二个。

    【讨论】:

    • 你是对的。我现在可以在客户端“警告”返回的字符串,它会显示我给出的第二个 json 示例。比 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2013-12-05
    • 1970-01-01
    • 2019-01-04
    • 2013-04-25
    相关资源
    最近更新 更多