Tôi đang sử dụng JSON.net Newton.NET để sắp xếp/deserialize nội dung cho tôi. Nhưng tôi có danh sách này trong đó chúng có Object
loại:JSON.NET - Làm cách nào để bao gồm Xử lý tên loại cho các kiểu C# nguyên thủy được lưu trữ trong một mảng/danh sách dưới dạng Kiểu đối tượng
var list = new List<Object>()
{
"hi there",
1,
2.33
};
Khi tôi serialize rằng với TypeNameHandling
thiết lập để TypeNameHandling.All
, tôi đã mong rằng nó cũng sẽ cung cấp một $type
cho mỗi trường hợp trong danh sách nhưng dường như không là trường hợp. Đây là kết quả thực tế:
{
"$type": "System.Collections.Generic.List`1[[System.Object, mscorlib]], mscorlib",
"$values": [
"hi there",
1,
2.33
]
}
tôi cần điều này để có Loại cụ thể Tên Xử lý đối với những loại nguyên thủy vì nếu tôi thêm một giá trị Int32
trong danh sách và khi nó quay trở lại sau khi deserializing nó JSON.NET đặt nó là Int64
. Đó là một vấn đề lớn đối với tôi bởi vì tôi đang cố gắng gọi một số phương pháp và để làm điều đó tôi cần phải so sánh các tham số và chúng PHẢI có cùng loại. Có cách nào hay một thiết lập bạn có thể đặt trong JSON.NET để đạt được những gì tôi cần?
Tôi đã nhìn thấy điều này post nhưng những gì nó làm là anh ấy đang cố gắng thay đổi hành vi mặc định và luôn trả lại Int32
mà không phải là những gì tôi đang tìm kiếm.
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn
Bạn sẽ cần để bọc các nguyên thủy của bạn bên trong một cái gì đó như 'TypeWrapper' từ [Deserialize enum cụ thể vào system.enum trong Json.Net] (https://stackoverflow.com/questions/31351262/deserialize-specific-enum-into-system-enum- trong-json-net). –
dbc