用于C#的JSON库

微软是否提供任何库在C#中使用JSON? 如果没有,你推荐什么开源库?

JSON.Net

您还应该尝试使用我的ServiceStack JsonSerializer – 这是目前最快的.NET JSON序列化器,它基于领先的JSON序列化器的基准,并支持序列化任何POCOtypes,DataContracts,列表/字典,接口,inheritance,包括匿名types等

基本例子

var customer = new Customer { Name="Joe Bloggs", Age=31 }; var json = customer.ToJson(); var fromJson = json.FromJson<Customer>(); 

注意:如果性能对你来说不重要,那么只能使用微软的JavaScriptSerializer,因为我不得不把它从基准testing中解脱出来,因​​为它比其他JSON序列化器慢了40倍100倍

.net框架通过JavaScriptSerializer支持JSON。 这是一个很好的例子,让你开始。

 using System.Collections.Generic; using System.Web.Script.Serialization; namespace GoogleTranslator.GoogleJSON { public class FooTest { public void Test() { const string json = @"{ ""DisplayFieldName"" : ""ObjectName"", ""FieldAliases"" : { ""ObjectName"" : ""ObjectName"", ""ObjectType"" : ""ObjectType"" }, ""PositionType"" : ""Point"", ""Reference"" : { ""Id"" : 1111 }, ""Objects"" : [ { ""Attributes"" : { ""ObjectName"" : ""test name"", ""ObjectType"" : ""test type"" }, ""Position"" : { ""X"" : 5, ""Y"" : 7 } } ] }"; var ser = new JavaScriptSerializer(); ser.Deserialize<Foo>(json); } } public class Foo { public Foo() { Objects = new List<SubObject>(); } public string DisplayFieldName { get; set; } public NameTypePair FieldAliases { get; set; } public PositionType PositionType { get; set; } public Ref Reference { get; set; } public List<SubObject> Objects { get; set; } } public class NameTypePair { public string ObjectName { get; set; } public string ObjectType { get; set; } } public enum PositionType { None, Point } public class Ref { public int Id { get; set; } } public class SubObject { public NameTypePair Attributes { get; set; } public Position Position { get; set; } } public class Position { public int X { get; set; } public int Y { get; set; } } } 

如果你看这里,你会看到几个不同的C#上的JSON库。

http://json.org/

你会发现一个版本的LINQ以及其他一些。 C#和JSON大约有7个库。

这是你在找什么?

System.Web.Script.Serialization.JavaScriptSerializer

看看system.web.script.serialization命名空间(我想你将需要.Net 3.5)

为了给这个问题提供一个更新的答案:是的.Net包含从3.5版本到System.Runtime.Serialization.Json命名空间的JSON seriliazer / deserliazer: http : //msdn.microsoft.com/en-us/library /system.runtime.serialization.json(v=vs.110).aspx

但根据JSON.Net的创build者,与他的开源实现相比,.Net Framework要慢得多。

为了回答你的第一个问题,Microsoft提供了一个DataContractJsonSerializer:请参阅msdn 如何:序列化和反序列化JSON数据

尝试Vici项目Vici Parser。 它包含一个JSONparsing器/记号器。 它工作的很好,我们把它和MVC框架一起使用。

更多信息: http : //viciproject.com/wiki/projects/parser/home

我忘记说它是开源的,所以你可以随时看看代码,如果你喜欢。