我启动了一个新的MVC 5 Web API项目,我想手动将对象编码为JSON以保存到数据库。但是,似乎我的项目中至少有四种不同的类似JSON的序列化程序类:
System.Runtime.Serialization.Json.DataContractJsonSerializer
System.Web.Helpers.Json
Newtonsoft.Json.JsonConvert
Newtonsoft.Json.JsonSerializer
我理解为什么这四个在概念上是不同的:一个来自WCF,两个来自Newtonsoft;两个是快速和脏的转换器,两个是可配置的序列化器等。
我无法弄清楚的是,我应该使用哪一个真的很重要。这4个选项之间是否存在功能差异?如果我使用一个类来序列化而另一个类在另一个应用程序中反序列化,是否会出现互操作性问题?
答案 0 :(得分:5)
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);