2008-12-24 30 views
18

Tôi cần serialize/de-serialize một số đối tượng vào/từ chuỗi và chuyển chúng chỉ là dữ liệu mờ. Tôi có thể sử dụng XmlSerializer để làm điều đó, nhưng chuỗi tạo ra trông vụng về và dài. Vì vậy, có bất kỳ Serializer ngắn gọn có sẵn trong. NET?Có bất kỳ lớp Trợ giúp sắp xếp Json Tắt-Kệ nào trong .NET BCL không?

Điều đầu tiên đến với tâm trí của tôi là có lẽ .NET nên có JSON Serializer, nhưng tôi không thể tìm thấy nó. Có cách tiếp cận off-the-shelf trong .NET để chuyển đổi đối tượng thành/từ chuỗi ngắn gọn không?

Trả lời

26

Có hai;

Trong cách truyền thống, họ không phải là 100% tương thích với mỗi khác, đặc biệt là tái DateTime; DCJS sử dụng (IIRC) một chuỗi chữ; JSS sử dụng new - và không thể đọc chính xác.

Tất nhiên, nếu văn bản nếu mờ, bạn cũng có thể sử dụng bất kỳ bộ nối tiếp nhị phân súc tích nào và chỉ mã hóa cơ sở 64 mã hóa cơ bản; ví dụ: protobuf-net là khá ngắn gọn. Nhưng việc sử dụng JSON thu nhỏ mã bên ngoài cần thiết ở mỗi đầu, vì vậy cũng có thể là đặt cược tốt nhất của bạn.

+0

Theo MSDN, JavaScriptSerializer là trong System.Web.Extensions.dll có sẵn trong .NET 3.5, không nhất thiết .NET 3.5 SP1. –

+0

IIRC, nó đã được đánh dấu lỗi thời và gần đây là "không được chấp nhận" với 3,5 SP1. –

0

chỉ cần sử dụng api của riêng bạn .. nó dễ dàng để tạo json .. nhưng bạn cũng có thể sử dụng thư viện JSON như JSON.NET ..

hạnh phúc mã hóa

0

JsonFx.NET đã một serializer mã nguồn mở cho phép serialization đến/từ các lớp được đánh máy mạnh mẽ có thể là những gì bạn đang tìm kiếm. Bạn có thể kiểm soát cách ngày được tuần tự hóa và ghi đè lên nhiều khía cạnh của tuần tự hóa. Nó thậm chí tương tác tốt với LINQ bằng cách hỗ trợ tuần tự hóa các đối tượng ẩn danh. API hoạt động giống như tuần tự hóa .NET XML.

4

Tôi có một rất nhanh mã nguồn mở JsonSerializer có sẵn mà có thể serialize bất kỳ poco hoặc DataContract loại, bao gồm giao diện ẩn danh và loại cuối ràng buộc vv

cơ bản Ví dụ

var customer = new Customer { Name="Joe Bloggs", Age=31 }; 
var json = JsonSerializer.SerializeToString(customer); 
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json); 
Các vấn đề liên quan