首页 新闻 赞助 找找看

Newtonsoft.Json 转DataTable到json,TableName被丢掉了 如何解决

0
悬赏园豆:30 [已解决问题] 解决于 2012-12-25 10:34

datatable转json时发现得到的json没有tablename属性,怎么让他不丢tablename呢?

DataTable table = new DataTable();
table.TableName = "TestTable";
table.Columns.Add("id", typeof(int));
table.Columns.Add("name", typeof(string));
var dr = table.NewRow();
dr["id"] = 1;
dr["name"] = "foo";
table.Rows.Add(dr);

var json = JsonConvert.SerializeObject(table);
var o = JsonConvert.DeserializeObject<DataTable>(json);

得到的json里没有tablename属性,反序列化也能拿到table,但是没有tablename了。

如何解决呢?

调调儿的主页 调调儿 | 初学一级 | 园豆:155
提问于:2012-12-24 17:41
< >
分享
最佳答案
1

没有tablename,并不妨碍json数据的使用。

或者newtonsoft.josn本身就是这样的设置

 

收获园豆:30
chenping2008 | 大侠五级 |园豆:9836 | 2012-12-25 09:17

看他的源码里反序列化时候有tablename的处理。但看不懂是怎么写入的。

if (reader.TokenType == JsonToken.PropertyName)
      {
        dt = new DataTable((string)reader.Value);
        reader.Read();
      }
      else
      {
        dt = new DataTable();
      }
调调儿 | 园豆:155 (初学一级) | 2012-12-25 09:38

@调调儿: 看看这个是不是对你有帮助:

http://blog.sina.com.cn/s/blog_70555f1701012ovk.html

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-25 10:04

@chenping2008: 应该可以参考这个做一个DataTableConverter .谢谢

调调儿 | 园豆:155 (初学一级) | 2012-12-25 10:15
其他回答(2)
-2

换个 JSON 序列化类。

Launcher | 园豆:45045 (高人七级) | 2012-12-24 18:00
0

官网有给示例的。

https://www.newtonsoft.com/json/help/html/SerializeDataSet.htm

https://www.newtonsoft.com/json/help/html/DeserializeDataSet.htm

Cxywzx | 园豆:207 (菜鸟二级) | 2017-11-27 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册