以下是我的代码:

private void serializationTest()
{
    DataTable dt = new DataTable("Customers");
    dsCustomer.Tables.Add(dt);
    dt.Columns.Add(new DataColumn("ID", typeof(int)));
    dt.Columns.Add(new DataColumn("Name", typeof(string)));
    dt.Columns.Add(new DataColumn("Height", typeof(decimal)));
    dt.Columns.Add(new DataColumn("Weight", typeof(double)));
    DataRow row = dt.NewRow();
    row["ID"] = 1;
    row["Name"] = "Susan";
    row["Height"] = 15.2m;
    row["Weight"] = 16.777;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["ID"] = 2;
    row["Name"] = "Bill";
    row["Height"] = 215.2m;
    row["Weight"] = 22.2222;
    dt.Rows.Add(row);

    row = dt.NewRow();
    row["ID"] = 3;
    row["Name"] = "Kris";
    row["Height"] = 974382.1658m;
    row["Weight"] = 3.33333333;
    dt.Rows.Add(row);  

    Request request = new Request();
    request.RequestName = "data";
    request.TableName = dt.TableName;
    request.dt = dt;

    var x = JsonConvert.SerializeObject(request);

    Request response = (Request)JsonConvert.DeserializeObject<Request>(x, new RequestConverter());
}

public class Request
{
    public string RequestName { get; set; }
    public string TableName { get; set; }
    public DataTable dt { get; set; }
}

public class RequestConverter : CustomCreationConverter<Request>
{
    public override Request Create(Type objectType)
    {
        return new Request();
    }
}

我正在做的就是序列化然后反序列化同一个对象作为我们将来如何管理通信的测试 . 但是,当:

Request response = (Request)JsonConvert.DeserializeObject<Request>(x, new RequestConverter());

执行,它返回错误:

反序列化对象时意外结束

有谁知道可能会发生什么?

X.ToString() (在某些换行符中添加以便于阅读):

{"RequestName":"data","TableName":"Customers","dt":
[{"ID":1,"Name":"Susan","Height":15.2,"Weight":16.777,"RS":"4"},
{"ID":2,"Name":"Bill","Height":215.2,"Weight":22.2222,"RS":"4"},
{"ID":3,"Name":"Kris","Height":974382.1658,"Weight":3.33333333,"RS":"4"}]}

编辑:这是内部堆栈跟踪 .

在U:\ Development \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ Serialization \ JsonSerializerInternalReader.cs中的Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject,JsonReader reader,JsonObjectContract contract,String id):第904行at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Populate(JsonReader reader,Object target)位于d:\ Development \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ Serialization \ JsonSerializerInternalReader.cs:第83行,位于Newtonsoft.Json.Serialization . JsonSerializerProxy.PopulateInternal(JsonReader reader,Object target)位于d:\ Development \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ Serialization \ JsonSerializerProxy.cs:第155行,位于Newtonsoft.Json.Converters.CustomCreationConverter`1.ReadJson(JsonReader)阅读器,类型objectType,对象existingValue,JsonSerializer序列化程序)在dtons \ .Jings \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ Converters \ CustomCreationConverter.cs:第64行,位于Newtonsoft.Json.Serialization.JsonSeriali zerInternalReader.CreateValueNonProperty(JsonReader reader,Type objectType,JsonContract contract)在d:\ Development \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ Serialization \ JsonSerializerInternalReader.cs:第203行,位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize( J:读取器,类型objectType)在d:中的U:\ Development \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ Serialization \ JsonSerializerInternalReader.cs:第111行中的Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType) \ Development \ Releases \ Json \ Working \ Src \ Newtonsoft.Json \ JsonSerializer.cs:Newtonsoft.Json.JsonConvert.DeserializeObject第418行(字符串值,类型类型,

其余的是线程/按钮点击堆栈 .