我無法理解我在Mac上使用Json.Net時遇到的問題。 我想序列化/反序列化下面的對象。Json.Net(8.0)在Mono 4.5 Mac上創建StringEnumConverter時出錯
該代碼在Windows上運行時沒有問題,但在Mac上生成Newtonsoft.Json.JsonException「Error creating StringEnumConverter」(也在圖中顯示)。我希望有人在代碼或錯誤消息中看到某些東西,這可能會指向正確的方向。 該對象包含更多的字段,但錯誤聽起來像它與枚舉有關。我在Xamarin 6/Mono .Net 4.5中構建,我正在使用Json.Net 8.0.3進行.Net 4.5。任何幫助不勝感激。
編輯1: 卸下JsonConverter(typeof運算(StringEnumConverter))裝修避免了異常 - 但是,枚舉序列化爲整數一次。
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace Lib
{
[DataContract(IsReference = true)]
public class Construction : LibraryComponent
{
public Construction() { }
public override string ToString() { return Serialization.Serialize(this); }
[DataMember]
public string Construction { get; set; } = "defaultConstruction";
...
[DataMember, JsonConverter(typeof(StringEnumConverter)), DefaultValue(InConvAlgo.TARP)]
public InConvAlgo SurfaceConvectionModelInside { get; set; } = InConvAlgo.TARP;
[DataMember, JsonConverter(typeof(StringEnumConverter)), DefaultValue(OutConvAlgo.DOE2)]
public OutConvAlgo SurfaceConvectionModelOutside { get; set; } = OutConvAlgo.DOE2;
...
[DataMember, DefaultValue(1)]
public int Priority { get; set; } = 1;
}
public enum InConvAlgo { Simple, TARP, TrombeWall, AdaptiveConvectionAlgorithm };
public enum OutConvAlgo { DOE2, TARP, MoWiTT, SimpleCombined, AdaptiveConvectionAlgorithm }; // DOE-2,
}