【发布时间】:2019-05-24 13:40:00
【问题描述】:
我有一个通常返回 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}]
【问题讨论】:
-
我认为主要问题是它是一个数据表。我会说考虑使用自定义对象或查看stackoverflow.com/questions/17398019/…
-
为了在http-mode wcf服务中返回Json(JavaScript Object Notation)字符串,我们通常返回List
-
抱歉回复晚了。我已经解决了。感谢大家的努力。