gpt4 book ai didi

c# - 在 Json.NET 中是否有用于将枚举序列化为字符串的任何属性?

转载 作者:行者123 更新时间:2023-12-04 16:31:29 28 4
gpt4 key购买 nike

这是我目前所拥有的:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace MyProject
{
[TestClass]
public class MyClass
{
[TestMethod]
public void VerifyJsonString()
{
var json = new JObject
{
new JProperty("Thing", Things.Cats)
};
var actual = json.ToString(Formatting.None);
const string expected = "{\"Thing\":\"Cats\"}";
Assert.AreEqual(expected, actual);
}
}

[JsonConverter(typeof(StringEnumConverter))]
public enum Things
{
Apples,
Bananas,
Cats
}
}

不幸的是,这个测试失败了,因为它将它序列化为 {"Thing":2}。我怎样才能让它正确地序列化枚举?我意识到我可以在其上显式调用 .ToString() 但我不想这样做。我宁愿有一些属性,这样我就不必每次都记得这样做。

最佳答案

只需使用StringEnumConverter

var actual = json.ToString(Formatting.None, 
new Newtonsoft.Json.Converters.StringEnumConverter());

编辑

Is there no way to tell it to automatically use that converter every time you call ToString()?

JsonConvert.DefaultSettings = () => new JsonSerializerSettings() { 
Converters = new List<Newtonsoft.Json.JsonConverter>() { new Newtonsoft.Json.Converters.StringEnumConverter() }
};

var actual = JsonConvert.SerializeObject(json);

关于c# - 在 Json.NET 中是否有用于将枚举序列化为字符串的任何属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328785/

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