Sự khác nhau giữa hai loại là gì? Tại sao bạn sử dụng cái này qua cái kia?System.Web.Script.Serialization.JavaScriptSerializer hoặc System.Runtime.Serialization.Json.DataContractJsonSerializer?
Trả lời
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.
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.
Trên thực tế, nó không được đánh dấu lại trong 3.5 SP1 –
Thú vị, Marc. Tôi không biết điều đó. Cảm ơn bạn đã chỉ ra điều đó. –
hữu ích liên quan SO câu hỏi: http://stackoverflow.com/questions/536359/why-microsoft-made-javascriptserializer -obsolete-before-to-net-3-5-sp1-and-again –