Ich habe eine Struktur, Vector2, die bei der Serialisierung zu JSON eine andere outpout auf verschiedenen Plattformen produziert.Warum ändert sich das JSON-Format zwischen Windows-Plattformen
Struct Ich Serialisierung:
#if XNADESIGNPROVIDED
[System.ComponentModel.TypeConverter(typeof(Microsoft.Xna.Framework.Design.Vector2TypeConverter))]
#endif
[DataContract]
[DebuggerDisplay("{DebugDisplayString,nq}")]
[DebuggerStepThrough]
public struct Vector2 : IEquatable<Vector2>
{
[DataMember]
public float X;
[DataMember]
public float Y;
}
Serialisierung
Diese Struktur Teil einer Klasse ist, ist, dass ein Teil einer Sammlung. Dieser Code ist auf beiden Plattformen enthalten und wird auf beiden Plattformen ausgeführt.
private static readonly JsonSerializerSettings JsonSerializerSettings = new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore };
public string ToJson()
{
return JsonConvert.SerializeObject(this, JsonSerializerSettings);
}
public static MenuEntryCollection FromJson(string in_Data)
{
return JsonConvert.DeserializeObject<MenuEntryCollection>(in_Data);
}
Ergebnis aus UWP Serializer:
"SizeRelative": {
"X": 224.0,
"Y": 63.9999847
},
Ergebnis aus Desktop-Seralizer:
"SizeRelative": "384, 64",
Mit Newtonsoft Json.net, 10.0.3
Warum ist die Ausgabe ist unterschiedlich ent? Und warum kann man das andere nicht laden?
Können Sie den Serialisierungscode auch angeben? – mehran
* Warum ist die Ausgabe anders? * Wahrscheinlich, weil Ihre 'Vector2' einen zugeordneten' TypeConverter' hat, der in Ihrer Frage nicht angezeigt wird. Siehe [Newtonsoft.JSON kann das Modell mit dem TypeConverter-Attribut nicht konvertieren] (https://Stackoverflow.com/q/31325866/3744182), warum dies wichtig ist. – dbc
Weiter, ich glaube, sogar innerhalb Json.NET, Unterstützung für Serialisierung mit einem zugeordneten 'TypeConverter' war ursprünglich nur in der .Net Full Framework Build (s). Für .Net-Kern (und UWP ich denke) wird es in der ** nächsten ** Version hinzugefügt werden, wie in [.NET Standard 2.0 # 1423] (https://github.com/JamesNK/Newtonsoft.Json/issues/1423). Wenn Sie Json.NET sowohl in UWP als auch auf dem Desktop verwenden, könnte dies die Inkonsistenz erklären. – dbc