序列化数据表的正确方法



以下代码在最后一行Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1. 上给出错误

DataTable dt = GetTable();
string json = JsonConvert.SerializeObject(dt, Formatting.None);
var @object = JObject.Parse(json);

串行化数据表以使行var @object = JObject.Parse(json);正常工作的正确方法是什么?

这是您从第二行获得的json:

[
  {
    "Dosage": 25,
    "Drug": "Indocin",
    "Patient": "David",
    "Date": "2014-10-31T16:25:33.181239"
  },
  {
    "Dosage": 50,
    "Drug": "Enebrel",
    "Patient": "Sam",
    "Date": "2014-10-31T16:25:33.181239"
  },
  .....

请注意第一个字符[。这意味着它是一个数组,而不是一个对象。这是一个重要的关键词。

所以,使用这个:

DataTable dt = GetTable();
string json = JsonConvert.SerializeObject(dt, Formatting.None);
var @object = JArray.Parse(json); // <-- Using JArray, not JObject

如果您想将json字符串转换回数据表,可以使用以下行:

var dataTable2 = JsonConvert.DeserializeObject<DataTable>(json);

最新更新