Bối cảnh: Tôi cần truyền một đối tượng có chứa một số lượng lớn các thuộc tính/trường (đến Lớp giao diện người dùng từ Tầng giữa). Trong danh sách các thuộc tính này, một là kiểu Version không được deserialized một cách chính xác từ định dạng chuỗi JSON. Tôi có một định dạng JSON được chọn trên XML khi JSON tuần tự hóa thành chuỗi sẽ trả về kết quả chuỗi ngắn.Tại sao System.Version trong chuỗi JSON không deserialize một cách chính xác?
Sự cố: System.Version không được deserialized chính xác. Tôi đã thử hai Thư viện .NET khác nhau. Sau đây là các đoạn mã cho mỗi:
Code Snippet 1 sử dụng ServiceStack .NET library:
var version = new Version(1, 2, 3, 0);
string reportJSON = JsonSerializer.SerializeToString<Version>(version);
//{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}
Version report2 = JsonSerializer.DeserializeFromString<Version>(reportJSON);
string reportJSON2 = JsonSerializer.SerializeToString<Version>(report2);
//{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
Code Snippet 2 sử dụng Newtonsoft .NET library nhưng với kết quả tương tự:
var version = new Version(1, 2, 3, 0);
string reportJSON = JsonConvert.SerializeObject(version);
//{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}
Version report2 = JsonConvert.DeserializeObject<Version>(reportJSON);
string reportJSON2 = JsonConvert.SerializeObject(report2);
//{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
Làm thế nào để sửa lỗi này? Hoặc thư viện JSON.NET nào khác có thể hoạt động chính xác?
có thể trùng lặp của [Tôi có thể deserialize cho một đối tượng bất biến bằng cách sử dụng JavascriptSerializer?] (Http://stackoverflow.com/questions/4080644/can-i-deserialize-to-an-immutable-object-using-javascriptserializer) – spender
@ spender: nhưng nó hoạt động tốt với các đối tượng chuỗi không thay đổi được. – Monish
@Monish [Here] (http://stackoverflow.com/a/2085890/1180426) là một liên kết giải thích tại sao lớp 'Version' không có khả năng tuần tự hóa XML, nhưng tôi khá chắc chắn cơ chế tương tự áp dụng cho các trình tuần tự hóa JSON . –