我有一个通常返回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}]"
如果反斜杠是游戏顶部,那么您可能需要定义和反对作为响应而不是字符串,并传回该对象。