json反序列化DataTable

lwb5151 2011-04-15 10:50:39
string json={"10111":{"tid":"10111","uid":"372","username":"hh890817","content":"4月15日消息,据国外媒体报道,市场研究机构NPD周四数据显示,3月美国视频游戏行业零售额为14.7亿美元,比去年同期的15.3亿美元下降4%。

其中,游戏机销售额上涨12%,任天堂的DS是最热销机型。

游戏软件销售额下降16%,任天堂的“Pokemon White Version”是该月最热销游戏。

游戏配件,例如Kinect等","content2":"

游戏配件,例如Kinect等","imageid":"0","videoid":"0","musicid":"0","roottid":"0","replys":"0","forwards":"0","totid":"0","touid":"0","tousername":"","dateline":"1分钟前","lastupdate":"1302835579","from":"web","type":"first","ba_code":"000000","ttype":"0","from_sina_img":"0","readydate":"0","addtime":"1302835579","top_parent_id":"0","parent_id":"0","ucuid":"1352987","nickname":"我爱我家","face":"./images/no.gif","validate":"0","__face__":"","face_original":"./images/no.gif","face_small":"./images/no.gif"}}

/// <summary>
/// Json转DataTable
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static DataTable JsonToTable(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jss.Deserialize<ArrayList>(json);
DataTable dtb = new DataTable();

if (dic.Count > 0)
{
foreach (Dictionary<string, object> drow in dic)
{
if (dtb.Columns.Count == 0)
{
foreach (string key in drow.Keys)
{
dtb.Columns.Add(key, drow[key].GetType());
}
}

DataRow row = dtb.NewRow();
foreach (string key in drow.Keys)
{

row[key] = drow[key];
}
dtb.Rows.Add(row);
}
}
return dtb;
}
jss.Deserialize<ArrayList>(json),怎么没用?
...全文
236 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
18妹 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 lwb5151 的回复:]
string json={"10111":{"tid":"10111","uid":"372","username":"hh890817","content":"4月15日消息,据国外媒体报道,市场研究机构NPD周四数据显示,3月美国视频游戏行业零售额为14.7亿美元,比去年同期的15.3亿美元下降4%。

其中,游戏机销售额上涨12%,任天堂的DS是最热销机型。

游戏软件销售额下降16……
[/Quote]

呵呵 就是这样的吧
子夜__ 2011-04-15
  • 打赏
  • 举报
回复
StringBuilder JsonString = new StringBuilder();
//Exception Handling
if (dt != null && dt.Rows.Count > 0)
{
JsonString.Append("{ ");
JsonString.Append("\"T_blog\":[ ");
for (int i = 0; i < dt.Rows.Count; i++)
{
JsonString.Append("{ ");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j < dt.Columns.Count - 1)
{
JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
}
else if (j == dt.Columns.Count - 1)
{
JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
}
}
/**//**/
/**//*end Of String*/
if (i == dt.Rows.Count - 1)
{
JsonString.Append("} ");
}
else
{
JsonString.Append("}, ");
}
}
JsonString.Append("]}");
return JsonString.ToString();
}
else
{
return null;
}
}

参考
  • 打赏
  • 举报
回复
ArrayList是一个object集合,而在序列化时需要告知DataContract所有使用的对象的强类型
用List<T>代替它就行了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧