Tôi đang sử dụng Json.NET Đầu tiên nhìn vào này:serializing XNA Rectangle với Json.NET
using System.Drawing;
string json = JsonConvert.SerializeObject(new Rectangle(-3,6,32,32), Formatting.Indented);
Console.WriteLine(json);
Rectangle deserializedRectangle = JsonConvert.DeserializeObject<Rectangle>(json);
Tất cả mọi thứ hoạt động như mong đợi. Đầu ra của bảng điều khiển là: "3, 6, 32, 32"
Nhưng khi tôi muốn làm điều tương tự với the XNA Rectangle, tôi gặp lỗi. (Chỉ cần thay thế cái cũ sử dụng với điều này "sử dụng Microsoft.Xna.Framework;")
Giao diện điều khiển đầu ra là: "{X: -3 Y: 6 Chiều rộng: 32 Chiều cao: 32}"
và lỗi mà nó ném là: "Lỗi chuyển đổi giá trị" {X: -3 Y: 6 Chiều rộng: 32 Chiều cao: 32} "để nhập 'Microsoft.Xna.Framework.Rectangle'."
Tại sao điều này xảy ra?
Có gì sai và cách khắc phục sự cố này?
Cố gắng xây dựng Json.NET từ nguồn để bạn có thể xem ngoại lệ được ném vào trình gỡ lỗi.Câu trả lời cho # 1: có vẻ khá rõ ràng rằng nó chuyển đổi 'Hình chữ nhật' bằng cách sử dụng phương thức' ToString', thay vì trích xuất các giá trị thành viên riêng lẻ và không có phương thức nào để chuyển đổi nó trở lại. Tôi có thể đoán rằng Json.NET sử dụng các thuộc tính get/set công khai (như 'System.Drawing.Rectangle' có) và không" xem "các trường công khai * của Microsoft.Xna.Framework.Rectangle' *. –