gpt4 book ai didi

c# - Json.Net (8.0) 在 Mono 4.5 Mac 上创建 StringEnumConverter 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:22 25 4
gpt4 key购买 nike

我无法理解我在 Mac 上使用 Json.Net 时遇到的问题。我正在尝试序列化/反序列化对象,如下所示。

代码在 Windows 上运行没有问题,但在 Mac 上生成 Newtonsoft.Json.JsonException“创建 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,

}

enter image description here

最佳答案

我对单声道有同样的问题。

一个对我有用的简单解决方法是创建一个继承自 StringEnumConverter 的类并使用它。

这避免了您复制此转换器的源代码(Json.net 有很多“utils”类)。

之后就没有问题了。

关于c# - Json.Net (8.0) 在 Mono 4.5 Mac 上创建 StringEnumConverter 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com