C# JSON反序列化对象转换值时出错

C# JSON反序列化对象转换值时出错,c#,json,json.net,C#,Json,Json.net,当我尝试使用deserilizeobject时,我得到了“错误转换值”。我的客户有时发送带有引号和特殊字符的数据。当他们试图序列化它时,它就起作用了。但当我试图使它合理化时,它就不起作用了。我尝试了escapehtml,但仍然有同样的问题。看起来“SerializeObject”没有抛出表示它是有效JSON的错误消息。请让我知道如何解决这个问题 string json2 = @"{ 'RootObject1':{ 't_date': '03-JAN-2016', 't_s

当我尝试使用deserilizeobject时,我得到了“错误转换值”。我的客户有时发送带有引号和特殊字符的数据。当他们试图序列化它时,它就起作用了。但当我试图使它合理化时,它就不起作用了。我尝试了escapehtml,但仍然有同样的问题。看起来“SerializeObject”没有抛出表示它是有效JSON的错误消息。请让我知道如何解决这个问题

string json2 = @"{
  'RootObject1':{
     't_date': '03-JAN-2016',
     't_summary': 'test """"""""""""'
   }
}";


var json3 = JsonConvert.SerializeObject(json2,  Newtonsoft.Json.Formatting.None,  new Newtonsoft.Json.JsonSerializerSettings{ StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml });

var myJsonObject = JsonConvert.DeserializeObject<RootObject1>(json3);

class RootObject1
{
    public string t_date { get; set; }
    public string t_summary { get; set; }
}
string json2=@”{
“RootObject1”:{
‘t_日期’:‘2016年1月3日’,
“测试摘要”:“测试”
}
}";
var json3=JsonConvert.SerializeObject(json2,Newtonsoft.Json.Formatting.None,new Newtonsoft.Json.JsonSerializerSettings{StringEscapeHandling=Newtonsoft.Json.StringEscapeHandling.EscapeHtml});
var myJsonObject=JsonConvert.DeserializeObject(json3);
类RootObject1
{
公共字符串t_date{get;set;}
公共字符串t_摘要{get;set;}
}

这不是正确的使用
jsonvert.Serialize
反序列化的方法
开始时,应该将对象序列化为字符串,然后从字符串反序列化回对象。下面是一个例子:

RootObject1 ro = new RootObject1();
ro.t_date = "03-JAN-2016";
ro.t_summary = @"test """"""""""""";
var json3 = JsonConvert.SerializeObject(ro, typeof(RootObject1), Newtonsoft.Json.Formatting.None, new Newtonsoft.Json.JsonSerializerSettings { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml });
var myJsonObject = JsonConvert.DeserializeObject<RootObject1>(json3);
Console.WriteLine(myJsonObject.t_date + "\t" + myJsonObject.t_summary);
RootObject1 ro=newrootobject1();
ro.t_日期=“2016年1月3日”;
ro.t_摘要=@“测试”;
var json3=JsonConvert.SerializeObject(ro,typeof(RootObject1),Newtonsoft.Json.Formatting.None,new Newtonsoft.Json.JsonSerializerSettings{StringEscapeHandling=Newtonsoft.Json.StringEscapeHandling.EscapeHtml});
var myJsonObject=JsonConvert.DeserializeObject(json3);
Console.WriteLine(myJsonObject.t_date+“\t”+myJsonObject.t_summary);
当您尝试序列化字符串时,它也将被反序列化为字符串。在某种程度上,这样做毫无意义

此外,如果要从JSON字符串获取对象,则应执行反序列化,并且JSON字符串无效。以下是您如何实现这一目标的示例:

string json2 = @"{
        't_date': '03-JAN-2016',
        't_summary': 'test """"""""""""'
    }";
var obj = JsonConvert.DeserializeObject<RootObject1>(json2);
Console.WriteLine(obj.t_date + "\t" + obj.t_summary);
string json2=@”{
‘t_日期’:‘2016年1月3日’,
“测试摘要”:“测试”
}";
var obj=JsonConvert.DeserializeObject(json2);
控制台写入线(obj.t\U日期+“\t”+obj.t\U摘要);

Add
RootObject
类的code添加了RootObject代码。您正在将字符串序列化为
json3
,因此这不会反序列化到对象,而只会反序列化到字符串。当我删除字符串中的“test”双引号时,它会起作用。正确的方法是什么?如果我错了,请纠正我,但是
json2
只是一个字符串,如果您想要一个字符串作为json对象,您必须先
parse()
它,然后您可以将它用作json对象,然后
反序列化()
它成为一个.net对象