我启动了一个新的 MVC 5 Web API 项目,我想手动将对象编码为 JSON 以保存到数据库中。但是,我的项目中似乎至少有四种不同的类似 JSON 的序列化程序类:
System.Runtime.Serialization.Json.DataContractJsonSerializer
System.Web.Helpers.Json
Newtonsoft.Json.JsonConvert
Newtonsoft.Json.JsonSerializer
我有点理解为什么这四个在概念上是不同的:一个来自 WCF,两个来自 Newtonsoft;两个是快速转换器,两个是可配置的序列化器,等等。
我想不通的是,我应该使用哪一个真的很重要。这 4 个选项之间在功能上有什么区别吗?如果我在另一个应用程序中使用一个类进行序列化并使用不同的类进行反序列化,是否会存在互操作性问题?
Newtonsoft 序列化器 is faster than遗留的 DataContractJsonSerializer
这就是它通常包含在最新版本的 MVC 中的原因。不过,您提到的两种 Newtonsoft 类型并不都是序列化程序 - 我相信 JsonConvert
只是一种在内部使用 JsonSerializer
的实用程序类型。
因此,在回答您的问题时,序列化/反序列化 json 的最简单(也是最快的方法之一)如下所示:
// Serialize
YourType instance = new YourType();
string json = JsonConvert.SerializeObject(instance);
// Deserialize
string json = "json_string";
YourType instance = JsonConvert.DeserializeObject<YourType>(json);