I’m using Json.NET
First look at this:
using System.Drawing;
string json = JsonConvert.SerializeObject(new Rectangle(-3,6,32,32), Formatting.Indented);
Console.WriteLine(json);
Rectangle deserializedRectangle = JsonConvert.DeserializeObject<Rectangle>(json);
Everything works as expected. The console output is: “3, 6, 32, 32”
But when I want to do the same thing with the XNA Rectangle, I get an error. (just replaced the old using with this “using Microsoft.Xna.Framework;”)
The console output is: “{X:-3 Y:6 Width:32 Height:32}”
and the error it throws is: “Error converting value “{X:-3 Y:6 Width:32 Height:32}” to type ‘Microsoft.Xna.Framework.Rectangle’.”
-
Why is this happening?
-
Whats going wrong, and how do I fix this??
I’ve done some checking, this is the code that causes the exception:
The actual call to the delegate that does the Convert work cannot find a convertor for this type. Investigating the cause for this, as the serializer is able to serialize and deserialize other types correctly.
EDIT:
This does not work, since the XNA Rectangle type is defined as:
Json.NET retrieves TypeConverter type, and calls this method on it:
The RectangleConverter has a flag saying “supportsStringConvert = false”, so attempting to convert a string into it fails.
This is the reason that deserializing this specific object is failing.