Tôi đang sử dụng Newtonsoft.Json để deserialize đầu ra từ webservice của tôi cho một đối tượng. Nó hoạt động tốt cho đến khi tôi thêm tài sản Bitmap
vào lớp học của tôi (tên là User
) để giữ hình đại diện.Newtonsoft.Json deserializing hình ảnh base64 không thành công
Webservice sẽ trả về đúng như chuỗi Base64, như mong đợi. Vấn đề là khi tôi cố gắng để chuyển đổi lại JSON từ WS đến một List<User>
, một JsonSerializationException
được ném trong khối mã này:
// T is IList<User>
response.Content.ReadAsStringAsync().Proceed(
(readTask) =>
{
var json = ((Task<string>)readTask).Result;
var result = JsonConvert.DeserializeObject<T>(json); //<-- it fails here
// do stuff!
});
Output từ ngoại lệ là:
Error converting value "System.Drawing.Bitmap" to type 'System.Drawing.Bitmap'. Path '[2].Avatar
và tìm kiếm ở ngoại lệ bên trong:
{"Could not cast or convert from System.String to System.Drawing.Bitmap."}
Rõ ràng là nó không phân tích cú pháp chuỗi Base64, nhưng không rõ tại sao.
Bất kỳ ý tưởng/giải pháp nào?
EDIT Tôi biết tôi có thể sử dụng Convert.FromBase64String
để nhận mảng byte và tải bitmap từ đó. Sau đó, tôi muốn cập nhật câu hỏi của mình để hỏi về cách tôi có thể bỏ qua hoặc phân tích cú pháp theo cách thủ công chỉ trường đó. Tôi muốn tránh, phải phân tích cú pháp tất cả JSON theo cách thủ công. Điều này có thể thực hiện được không?
CHỈNH SỬA 2 Tôi phát hiện ra vấn đề gốc: JSON không được sắp xếp chính xác trong webservice (và tôi không thấy lý do tại sao). Tôi nghĩ rằng this là một vấn đề hơi khác, nhưng không. Webservice của tôi chỉ đơn giản trả về một chuỗi "System.Drawing.Bitmap"
thay vì nội dung base64 của nó. Do đó, JsonSerializationException
.
Tôi không thể giải quyết vấn đề đó, giải pháp duy nhất tôi tìm thấy là biến trường của tôi thành byte []
.
Vui lòng tham khảo câu hỏi thay đổi nội dung của tôi. Có cách nào để làm cho 'JsonConvert.DeserializeObject (json)' bỏ qua một trường chỉ? Đây là bên trong một phương pháp chung, vì vậy tôi muốn tránh một phân tích thủ công đầy đủ ... –
Joel
@Joel Xem chỉnh sửa của tôi ..... Không cần regex hoặc phân tích cú pháp chuỗi json theo cách thủ công. – I4V
Với mã này, tôi phải sắp xếp theo cách thủ công đối tượng của mình trong webservice, phải không? – Joel