我有一个包含枚举属性的类,在使用JavaScriptSerializer序列化对象时,我的json结果包含枚举的整数值,而不是它的字符串“name”。有没有一种方法来获得枚举作为字符串在我的json而不必创建一个自定义JavaScriptConverter?也许有一个属性,我可以装饰枚举定义,或对象属性?
举个例子:
enum Gender { Male, Female }
class Person
{
int Age { get; set; }
Gender Gender { get; set; }
}
期望的JSON结果:
{ "Age": 35, "Gender": "Male" }
理想情况下,用内置的。net框架类来寻找答案,如果没有可能的替代方案(如Json.net)也是受欢迎的。
对于。net 6.0,如果你想使用内置的JsonSerializer (System.Text.Json)
然后,它是开箱即用的,你只需要使用内置的JsonStringEnumConverter属性。例如:
[JsonConverter(typeof(JsonStringEnumConverter))]
public SomeEnumType EnumProperty { get; set; }
就是这样,但是要确保你的SomeEnumType包含了精确的字符串值,否则它会抛出异常。套管似乎不敏感。
参考:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-customize-properties?pivots=dotnet-6-0 # enums-as-strings