.NET BCL中是否有现成的Json序列化辅助类?

18

我需要将一些对象序列化/反序列化成字符串,并将它们作为不透明数据传输。我可以使用XmlSerializer来完成,但生成的字符串看起来笨重且过长。那么,有没有在.NET中可用的简洁的序列化程序呢?

我首先想到的是,或许.NET应该有JSON序列化程序,但我找不到它。在.NET中是否有现成的方法将对象转换为/从精简字符串?

6个回答

26

有两种方法:

传统方式下,它们彼此之间并不完全兼容,特别是在处理 DateTime类型时;DCJS使用(我记得是)字面字符串;JSS使用new-两者都无法正确读取其他格式。

当然,如果文本是不透明的,则还可以使用任何简洁的二进制序列化程序,并将其base-64编码;例如,protobuf-net编码非常简洁。但是,使用JSON可以最大程度地减少每个端点需要的外部代码,因此可能是您最好的选择。


根据MSDN的说法,JavaScriptSerializer位于System.Web.Extensions.dll中,该文件可在.NET 3.5中使用,但不一定需要.NET 3.5 SP1。 - Morgan Cheng
据我所知,它已被标记为过时,并在3.5 SP1中最近被“取消弃用”。 - Christian.K

10

Json.Net是.NET平台上的JSON库,可在CodePlex上获取。


4
我有一个非常快速的开源JsonSerializer,可以序列化任何POCO或DataContract类型,包括接口、匿名和晚绑定类型等。
基本示例:
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = JsonSerializer.SerializeToString(customer);
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json); 

0
JsonFx.NET有一个开源的序列化器,允许将数据序列化到/从强类型类中,这可能是你在寻找的。您可以控制日期的序列化方式,并覆盖序列化的许多方面。它甚至与Linq良好地交互,支持对匿名对象的序列化。该API的工作方式与.NET XML序列化完全相同。

0

0

只需使用自己的API即可...创建JSON很容易...但您也可以使用像JSON.NET这样的JSON库...

编码愉快


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接