Microsoft có cung cấp bất kỳ thư viện nào để làm việc với JSON trong C # không? Nếu không, bạn giới thiệu thư viện mã nguồn mở nào?
Câu trả lời:
Bạn cũng nên dùng thử ServiceStack JsonSerializer của tôi - đó là trình tuần tự .NET JSON nhanh nhất tại thời điểm hiện tại dựa trên điểm chuẩn của các trình tuần tự JSON hàng đầu và hỗ trợ tuần tự hóa mọi Loại POCO, DataContracts, Danh sách / Từ điển, Giao diện, Kế thừa, Các đối tượng bị ràng buộc muộn bao gồm cả ẩn danh các loại, v.v.
Ví dụ cơ bản
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = customer.ToJson();
var fromJson = json.FromJson<Customer>();
Lưu ý: Chỉ sử dụng Microsofts JavaScriptSerializer nếu hiệu suất không quan trọng đối với bạn vì tôi đã phải để nó ra khỏi điểm chuẩn của mình vì nó chậm hơn tới 40x-100x so với các trình tuần tự JSON khác.
Khung .net hỗ trợ JSON thông qua JavaScriptSerializer. Đây là một ví dụ điển hình để bạn bắt đầu.
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; }
}
}
Nếu bạn nhìn vào đây, bạn sẽ thấy một số thư viện khác nhau cho JSON trên C #.
Bạn sẽ tìm thấy một phiên bản cho LINQ cũng như một số phiên bản khác. Có khoảng 7 thư viện cho C # và JSON.
Đây có phải là những gì bạn đang tìm kiếm?
Hãy xem không gian tên system.web.script.serialization (tôi nghĩ bạn sẽ cần .Net 3.5)
Để đưa ra câu trả lời cập nhật hơn cho câu hỏi này: vâng, .Net bao gồm JSON seriliazer / Desliazer kể từ phiên bản 3.5 thông qua System.Runtime.Serialization.Json Namespace: http://msdn.microsoft.com/en-us/library /system.runtime.serialization.json(v=vs.110).aspx
Nhưng theo người tạo ra JSON.Net, .Net Framework so với việc triển khai mã nguồn mở của anh ấy chậm hơn rất nhiều.
Để trả lời câu hỏi đầu tiên của bạn, Microsoft có gửi một DataContractJsonSerializer: xem msdn Cách thực hiện: Serialize và Deserialize JSON Data
Hãy thử Vici Project, Vici Parser. Nó bao gồm một trình phân tích cú pháp / tokeniser JSON. Nó hoạt động tuyệt vời, chúng tôi sử dụng nó cùng với khuôn khổ MVC.
Thông tin thêm tại: http://viciproject.com/wiki/projects/parser/home
Tôi quên nói rằng nó là mã nguồn mở nên bạn luôn có thể xem qua mã nếu muốn.