将Json字符串转换为DataTable



我正在尝试将Json转换为DataTable。我在将jsonArray转换为DataTable时获得了成功。但是,当转换json字符串时(如下):

var r = {'ASSOCIATION_ID':61.0,'DESCRIPTION':'fssESTf64 - false','ACTIVE':true,'MODEL_TYPE':'0','SEARCH_TYPE':'false','CREATED_BY':'1090323','CREATED_DATE':'2015-09-17T14:41:20','LAST_UPDATED_BY':'1090323','LAST_UPDATED_DATE':'2016-02-26T15:55:54'}

我得到一个错误为{"读取DataTable时意外的JSON令牌。预期的StartArray,得到的StartObject.Path",第1行,位置1。"}

我的代码很简单:

DataTable a = JsonConvert.DeserializeObject<DataTable>(r);

请协助。

根JSON容器是一个对象(逗号分隔的键/值对的无序集合,由大括号-{}包围)。Json.NET将DataTable序列化为对象的数组(由方括号[]包围的逗号分隔标记的有序集合),每行有一个数组条目,如序列化数据集中所示。即,以下内容可以反序列化为数据表:

[
  {
    "ASSOCIATION_ID": 61.0,
    "DESCRIPTION": "fssESTf64 - false",
    "ACTIVE": true,
    "MODEL_TYPE": "0",
    "SEARCH_TYPE": "false",
    "CREATED_BY": "1090323",
    "CREATED_DATE": "2015-09-17T14:41:20",
    "LAST_UPDATED_BY": "1090323",
    "LAST_UPDATED_DATE": "2016-02-26T15:55:54"
  }
]

因此,您的JSON无法通过JSON.NET.自动映射到DataTable

如果需要,可以将JSON对象反序列化为一行DataTable。要做到这一点,请将它加载到一个中间JToken中,检查它是否是一个对象而不是数组,如果是,请将其封装在一个数组中,然后反序列化:

var token = JToken.Parse(r);
if (token.Type == JTokenType.Object)
    token = new JArray(token);
var a = token.ToObject<DataTable>();

相关内容

  • 没有找到相关文章

最新更新