如何从 WCF Web 服务返回 JSON



我有一个通常返回DataTable的wcf Web服务。我用Newtonsoft.JSON序列化了它,但它以字符串标记返回它,我的意思是" " ' 标记。这就是为什么我不能在Android中使用它。

我尝试了返回对象,但没有任何变化。我尝试更改响应格式或类似的东西,但它仍然相同。

这是我的 WCF 接口代码

[WebGet (BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat =WebMessageFormat.Json,
        UriTemplate = "GetRecords")]

这是我的服务代码。

     public string btGetTable()
     {
        DataTable dt = new DataTable("ExampleDT");
        dt.Columns.Add(new DataColumn("KODU", typeof(string)));
        dt.Columns.Add(new DataColumn("ACIKLAMA", typeof(string)));
        dt.Columns.Add(new DataColumn("KAPALI_FL", typeof(bool)));
        dt.Columns.Add(new DataColumn("TARIH", typeof(DateTime)));
        dt.Columns.Add(new DataColumn("TUTAR", typeof(Decimal)));
        dt.Columns.Add(new DataColumn("DURUM", typeof(short)));
        DataRow dr = dt.NewRow();
        dr[0] = "TLP.00000001";
        dr[1] = "Dummy Record 1";
        dr[2] = false;
        dr[3] = DateTime.Now;
        dr[4] = 1254.78d;
        dr[5] = 0;
        dt.Rows.Add(dr);
 string serializedDt = JsonConvert.SerializeObject(dt);
 return serializedDt;

这是实际输出

 "[{"KODU":"TLP.00000001","ACIKLAMA":"Dummy Record 1","KAPALI_FL":false,"TARIH":"2018-12-26T11:42:03.2652779","TUTAR":1254.78,"DURUM":0}]"

预期输出

 [{"KODU":"TLP.00000001","ACIKLAMA":"Dummy Record 1","KAPALI_FL":false,"TARIH":"2018-12-26T11:42:03.2652779","TUTAR":1254.78,"DURUM":0}]

这是否会导致使用您的 Web 方法的客户端出现问题?

反斜杠

实际上并不存在,如果您在调试时使用文本可视化工具,您将看到没有反斜杠的 JSON:

[{"KODU":"TLP.00000001","ACIKLAMA":"Dummy Record 1","KAPALI_FL":false,"TARIH":"2018-12-26T12:19:22.6096277","TUTAR":1254.78,"DURUM":0}]

反斜杠可见/用于表示在请求中传递时双引号的转义。

如果您将所有双引号替换为空字符串,则反斜杠将不再存在。 return serializeddt.Replace(""","");

"[{KODU:TLP.00000001,ACIKLAMA:Dummy Record 1,KAPALI_FL:false,TARIH:2018-12-26T12:44:16.737631,TUTAR:1254.78,DURUM:0}]"

如果反斜杠是游戏顶部,那么您可能需要定义和反对作为响应而不是字符串,并传回该对象。

相关内容

  • 没有找到相关文章

最新更新