Google Visualization API .net?

时间:2009-03-26 16:36:10

标签: serialization json.net

如何在我的.NET应用程序中使用谷歌的可视化api json格式的数据?目前无法想象如何使用这些数据。

我是否必须自己将json解析为对象?我可以使用Json.NET对其进行反序列化吗?现在我不知道如何从这开始。任何帮助表示赞赏。

数据如下所示:

{
  cols: [
    {id: '1', label: 'Name', type: 'string'},
    {id: '2', label: 'Age', type: 'number'},
    {id: '3', label: 'Birthdate', type: 'date'}
  ],
  rows: [
    {c:[{v: 'Dan'}, {v: 18.0, f: 'eighteen'}, {v: new Date(2008, 1, 28, 0, 31, 26), f: '2/28/08 12:31 AM'}]},
    {c:[{v: 'Frank'}, {v: 19.0, f: 'nineteen'}, {v: new Date(2008, 2, 30, 0, 31, 26), f: '3/30/08 12:31 AM'}]},
    {c:[{v: 'Esther'}, {v: 20.0, f: 'twenty'}, {v: new Date(2008, 3, 30, 0, 31, 26), f: '4/30/08 12:31 AM'}]}
  ]
}

3 个答案:

答案 0 :(得分:2)

  

我可以使用Json.NET对其进行反序列化吗?

是。这就是它的用途。

  

现在我不知道如何从这开始。任何帮助表示赞赏。

The manual

答案 1 :(得分:1)

您可以通过System.Runtime.Serialization.Json命名空间中的DataContractJsonSerializer类使用Json反序列化。它与XML序列化非常相似,因为你创建了一堆数据类,用属性装扮它们并将Json放入反序列化器中。

下面的文章介绍了如何使用Google网络搜索示例与Json合作:

http://www.ben-morris.com/google-search-api-deserialize-json-output-net

答案 2 :(得分:0)

我知道我迟到了,但是对于未来的寻求者来看看这里:

https://code.google.com/p/bortosky-google-visualization/

我正在使用它没有任何问题。

示例代码:

 DataTable tbl = DatabaseEnquiry(sqlcommand, DATE_IN, DATE_OUT, "dd/MM/yyyy HH:mm:ss", true);
 return new Bortosky.Google.Visualization.GoogleDataTable(tbl).GetJson().ToString();

或者您可以使用JavaScriptSerializer:

DataTable tbl = DatabaseEnquiry(sqlcommand, DATE_IN, DATE_OUT, "dd/MM/yyyy HH:mm:ss", true);
JavaScriptSerializer js = new JavaScriptSerializer();
StringBuilder sb = new StringBuilder();
try
{
    var linqResults = from DataRow row in tbl.AsEnumerable()
                      select new
                      {
                          avgft = row.Field<object>("AVG FT"),
                          minft = row.Field<object>("MIN FT"),
                          maxft = row.Field<object>("MAX FT"),
                          avgffc = row.Field<object>("AVG FFC"),
                          minffc = row.Field<object>("MIN FFC"),
                          maxffc = row.Field<object>("MAX FFC"),
                          avgtt = row.Field<object>("AVG TT"),
                          mintt = row.Field<object>("MIN TT"),
                          maxtt = row.Field<object>("MAX TT"),
                          avgtfc = row.Field<object>("AVG TFC"),
                          mintfc = row.Field<object>("MIN TFC"),
                          maxtfc = row.Field<object>("MAX TFC")
                      };
    js.Serialize(linqResults, sb);
}
catch (InvalidCastException e)
{
    logger.Debug(e.StackTrace);
    return null;
}
return sb.ToString();

}