2009-05-06 1 views

Trả lời

14

Tìm thấy ở đây: http://aaron-powell.spaces.live.com/blog/cns!91A824220E2BF369!150.entry

DataContractJsonSerializer Mục đích chính của DataContractJsonSerializer được sử dụng với WCF, vì một serialization là một trọng tâm lớn của WCF. Ngoài ra, nó cũng được trang bị tốt hơn để xử lý các lớp phức tạp mà chỉ có các thuộc tính nhất định có sẵn cho tuần tự hóa. Lớp này được đánh máy mạnh hơn, có nhiều kiến ​​thức hơn về loại mà nó xử lý và xử lý lỗi tốt hơn đối với JSON được định dạng sai.

JavaScriptSerializer Lớp này được trang bị tốt hơn để tuần tự hóa nhanh hơn, đó là cách tiếp cận cao bồi hơn. Có ít kiểm tra lỗi hơn và ít kiểm soát hơn những thuộc tính được tuần tự hóa.

Cập nhật

Như dùng diễn đàn là đã chết, đây là liên kết khác: http://kb.cnblogs.com/a/1454030.

+0

Liên kết bị hỏng vì không gian trực tiếp được chuyển đến WordPress.com ... và cũng không có chuyển hướng. Bài viết này có sẵn ở bất kỳ nơi nào khác không? – EAMann

+0

@EAMann: Xem cập nhật – Kamarey

+0

Ai ngu ngốc đến mức trả lời 6 năm mà không nêu rõ lý do? – Kamarey

1

Trình JavaScriptSerializer được đánh dấu là lỗi thời trong khung 3.5. Bạn không nên sử dụng nó vì lý do đó. Tuy nhiên, quay lại câu hỏi của bạn. JavaScriptSerializer không yêu cầu các lớp được đánh dấu là [Serializable] hoặc là [DataContract] nhưng DataContractJsonSerializer thực hiện. Nếu bạn đã biên dịch các lớp mà bạn không thể đánh dấu bằng các thuộc tính, bạn có thể muốn sử dụng trình serializer JSON cũ hơn.

+11

Trên thực tế, nó không được đánh dấu lại trong 3.5 SP1 –

+1

Thú vị, Marc. Tôi không biết điều đó. Cảm ơn bạn đã chỉ ra điều đó. –

9

Cá nhân, tôi muốn nhìn vào Json.NET - điều này có lợi thế là .NET 2.0 tương thích

+0

JavaScriptSerializer tương thích với 2.0 ... – bdukes

+8

Thật sao? MSDN nói 3.5 ... –