如何格式化Web服务asmx的JSON输出以与Google可视化一起使用

时间:2014-06-24 13:12:28

标签: asp.net json web-services google-visualization asmx

我有一个.asmx webservice,它输出一个像这样的JSON字符串:

"d":"{\"cols\": [{\"type\": \"datetime\" ,\"id\": \"EvenDate\" ,\"label\": \"EvenDate\" }, {\"type\": \"number\" ,\"id\": \"Entries\" ,\"label\": \"Entries\" }], \"rows\" : [{\"c\" : [{\"v\": \"Date(2014, 5, 16, 0, 0, 0)\"}, {\"v\": 1}]}, {\"c\" : [{\"v\": \"Date(2014, 5, 22, 0, 0, 0)\"}, {\"v\": 1}]}, {\"c\" : [{\"v\": \"Date(2014, 5, 23, 0, 0, 0)\"}, {\"v\": 5}]}]}"}

Google Visualization要求数据如下所示。

{
  "cols": [
        {"id":"","label":"Topping","pattern":"","type":"string"},
        {"id":"","label":"Slices","pattern":"","type":"number"}
      ],
  "rows": [
        {"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
        {"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
        {"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
        {"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
        {"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
      ]
}

我的JSON输出很好,除了webservice正在添加d:以及\,但我认为\只是转义字符。有没有办法从JSON响应中删除d:

这是我的网络服务:

' google datatable json wrapper
Imports Google.DataTable.Net.Wrapper
...
Dim dt As System.Data.DataTable
dt = tlsession.FillSessionTable(sqlstr)
Dim dataTable = SystemDataTableConverter.Convert(dt)
Dim jsonString As String = dataTable.GetJson()
Return jsonString

您能否指出我如何解决JSON输出的正确方向?谢谢!

1 个答案:

答案 0 :(得分:1)

我发现直接从.net网络服务获取Google DataTable的最简单方法是使用Google DataTable .Net Wrapper。他们的文档写得很清楚,所以我不会在这里用例子来详细说明。我会说你可以使用库将System.Data.DataTable转换为Google DataTable的优秀JSON表示,甚至可以将DateTime对象正确地序列化为Google Visualization API使用的更不寻常的格式。

编辑:此外,他们还有一个NuGet包here