Microsoft是否提供任何库以在C#中使用JSON?如果没有,您推荐什么开源库?
Answers:
您还应该尝试使用我的ServiceStack JsonSerializer-基于领先的JSON序列化程序的基准,它是目前最快的.NET JSON序列化程序,并支持序列化任何POCO类型,DataContract,列表/字典,接口,继承,后期绑定对象(包括匿名对象)类型等
基本范例
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>();
注意:如果性能对您不重要,请仅使用Microsoft的JavaScriptSerializer,因为我不得不将其排除在基准测试之外,因为它的速度比其他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; }
}
}
要对此问题提供最新的答案:是的,.Net通过System.Runtime.Serialization.Json命名空间自3.5版以来包含JSON seriliazer / deserliazer:http : //msdn.microsoft.com/zh-cn/library /system.runtime.serialization.json(v=vs.110).aspx
但是,根据JSON.Net的创建者说,.Net Framework与他的开源实现相比要慢得多。
为了回答您的第一个问题,Microsoft确实提供了DataContractJsonSerializer:请参阅msdn如何:对JSON数据进行序列化和反序列化
尝试Vici项目,Vici分析器。它包括一个JSON解析器/令牌器。它很好用,我们将其与MVC框架一起使用。
有关更多信息,请访问:http : //viciproject.com/wiki/projects/parser/home
我忘了说它是开源的,因此您可以根据需要随时查看代码。