JSON에 직렬화되면 다른 플랫폼에서 다른 출력이 생성되는 구조체 Vector2가 있습니다.Windows 플랫폼간에 JSON 저장 형식이 변경되는 이유
구조체 나는 직렬화 오전 :
이 구조체는 클래스의 일부이다
#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;
}
직렬화, 즉 모음의 일부입니다. 이 코드는 두 플랫폼 모두에 포함되어 있으며 두 플랫폼 모두에서 실행됩니다. UWP 시리얼에서
는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);
}
결과 :
"SizeRelative": {
"X": 224.0,
"Y": 63.9999847
},
결과 데스크톱에서 Seralizer : Newtonsoft Json.net를 사용
"SizeRelative": "384, 64",
, 10.0.3
가 왜 출력이 다르다. 엔트? 왜 다른 하나를로드 할 수 있습니까?
직렬화 코드도 제공 할 수 있습니까? – mehran
* 출력이 다른 이유는 무엇입니까? * 아마도 귀하의 'Vector2'에 관련 'TypeConverter'이 귀하의 질문에 나타나지 않았기 때문일 수 있습니다. 이 문제가 발생하는 이유는 [Newtonsoft.JSON이 TypeConverter 특성을 가진 모델을 변환 할 수 없음] (https://stackoverflow.com/q/31325866/3744182)을 참조하십시오. – dbc
또한, Json.NET 내에서도 연관된'TypeConverter'를 사용한 직렬화 지원은 원래 .Net 전체 프레임 워크 빌드에서만 사용할 수있었습니다. .Net 코어 (및 UWP)에 대해서는 [.NET 표준 2.0 # 1423] (https://github.com/JamesNK/Newtonsoft.Json/issues)에서 설명한대로 ** 다음 ** 릴리스에 추가됩니다./1423). 따라서 UWP와 데스크톱 모두에서 Json.NET을 사용한다면 불일치를 설명 할 수 있습니다. – dbc