【问题标题】:JSON to DataTableJSON 到数据表
【发布时间】:2011-04-14 07:08:36
【问题描述】:

我正在尝试将 JSON 文本序列化为 DataTable,如下所示。

List<Dictionary<string, string>> list = 
JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(jsonText);
DataTable dTable;
dTable = (from p in list select p).CopyToDataTable();

我收到以下错误。我该如何解决?

错误:

Cannot deserialize JSON object into type 
'System.Collections.Generic.List`1[System.Collections.Generic.Dictionary`2
[System.String,System.String]]'.

【问题讨论】:

  • 对我来说这似乎很明显,这与 DataTables 无关,因为异常被抛出在第一行。这才是你应该专注的。
  • 请在这里查看答案stackoverflow.com/a/35546685/5292650这是最简单的一个

标签: c# json


【解决方案1】:

这对我有用:

using Newtonsoft.Json;

string json = "[{"clientID":"1788","projectID":"19"},{"clientID":"1789","projectID":"24"},{"clientID":"1790","projectID":"24"},{"clientID":"1790","projectID":"23"},{"clientID":"1790","projectID":"21"}]";

DataTable tester = (DataTable) JsonConvert.DeserializeObject(json, (typeof(DataTable)));

【讨论】:

    【解决方案2】:
    public object Deserialize(string jsonText, Type valueType)
    {
        try
        {
            Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
    
            json.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
            json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
            json.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    
            StringReader sr = new StringReader(jsonText);
    
            Newtonsoft.Json.JsonTextReader reader = new JsonTextReader(sr);
            object result = json.Deserialize(reader, valueType);
            reader.Close();
            return result;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    
    
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      public static DataTable JsonToDataTable(string Json)
              {
                  DataTable dt = new DataTable();
                  try
                  {
                      dt = (DataTable)JsonConvert.DeserializeObject(Json, (typeof(DataTable)));
                  }
                  catch (Exception ex)
                  {
                      string chk = ex.Message;
                      dt = new DataTable();
                  }
                  return dt;
              }

      【讨论】:

        猜你喜欢
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-04
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多