c# - 我想要哪个 Json 序列化器?

标签 c# asp.net-mvc json serialization

<分区>

我启动了一个新的 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);

关于c# - 我想要哪个 Json 序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26913322/

相关文章:

java - 如何通过 ListView 传递数据,Android - Java

Android - 没有键的数组上的 JsonArray

c# - 将字符串分解为 float/alpha 部分的正则表达式

c# - 在 VS2008 中,有没有办法自动 "Attach to Process"?

c# - 加载表单后自定义光标消失/停止工作秒

asp.net-mvc - 什么是依赖注入(inject)?

javascript - 使用 Angular js 从 json 数组中删除重复值

c# - sqlhelper 参数缓存中正在使用什么 "cache"

asp.net - 如何对 UrlHelper 自定义帮助器方法进行单元测试

javascript - AJAX 调用不适用于 Controller 操作