Json反序列化字符串错误

时间:2015-07-27 07:34:03

标签: c# json

private void ExmpDatasave()
    {
        DataSet dataSet = new DataSet("dataSet");
         dataSet.Namespace = "NetFrameWork";
         DataTable table = new DataTable();
         DataColumn idColumn = new DataColumn("id", typeof(int));
         idColumn.AutoIncrement = true;

         DataColumn itemColumn = new DataColumn("item");
         table.Columns.Add(idColumn);
         table.Columns.Add(itemColumn);
        dataSet.Tables.Add(table);

        for (int i = 0; i < 2; i++)
        {
            DataRow newRow = table.NewRow();
            newRow["item"] = "item " + i;
            table.Rows.Add(newRow);
        }

        dataSet.AcceptChanges();

        string json = JsonConvert.SerializeObject(dataSet, Formatting.None);
         Helper.WriteToJson(json);
    }

    private void ExmpDataread()
    {

        using (StreamReader r = new StreamReader("exmp.json"))
        {
            string json = r.ReadToEnd();

            var myJSONString = json.ToString();

            DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(json);
            DataTable dataTable = dataSet.Tables["Table1"];
            Console.WriteLine(dataTable.Rows.Count);
        }
    }

嘿,我的简短代码ExmpDatasave()用于保存json中的整个数据工作正常; ExmpDataread会出错:

  

读取DataSet时意外结束。路径'',第1行,第78位。

我的json值"{\"Table1\":[{\"id\":0,\"item\":\"item 0\"},{\"id\":1,\"item\":\"item 1\"}]}"
请帮我搞清楚。提前谢谢..

1 个答案:

答案 0 :(得分:0)

我遇到了这个确切的问题,虽然我不够精明,无法解决这个问题但我能够解决这个问题并且我认为更好。

我决定使用Newtonsoft.Json.Linq;得到类似的结果

            dynamic json = JsonConvert.DeserializeObject(reader.ReadToEnd());
            JObject js = JObject.Parse(json);
            Console.Writeline(js["Table1"].Count);

我不会认为这是一个完整的答案,因为我无法弄清楚为什么它会在一切都说不应该出错时给出错误。但我很高兴找到这条路,所以我希望它有所帮助