当我尝试使用deserilizeobject时,我收到'错误转换值'。我的客户端有时会发送带引号和特殊字符的数据。它在尝试序列化时有效。但是当我试图去除它时,它不起作用。我尝试使用escapehtml但仍然有同样的问题。看起来'SerializeObject'不会抛出错误消息,这意味着它是有效的JSON。请让我知道如何解决这个问题。
{{1}}
答案 0 :(得分:1)
这不是您使用JsonConvert.Serialize
和Deserialize
的正确方法。
在开始时,您应该将对象序列化为字符串,然后从字符串反向反序列化。这是一个例子:
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);
当您尝试序列化字符串时,它也将反序列化为字符串。在某些方面它没有任何意义。
此外,如果您想从JSON字符串中获取对象,则应该执行Deserealization并且您的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);