Hoo*_*ini 1 c# serialization json.net
这是我的enum
类型:
public enum AccessScope
{
[JsonProperty("read_content")]
ReadContent,
[JsonProperty("write_content")]
WriteContent,
[JsonProperty("read_themes")]
ReadThemes,
[JsonProperty("write_themes")]
WriteThemes
}
Run Code Online (Sandbox Code Playgroud)
我想enum
使用字符串值对其进行序列化......当我尝试以下代码时,数值用于序列化:
[TestMethod]
public void Serialize_access_scopes()
{
var requiredPermissions = new List<AccessScope>()
{
AccessScope.ReadContent,
AccessScope.WriteContent,
};
var commaSeparatedPermissions = JsonConvert.SerializeObject(requiredPermissions);
commaSeparatedPermissions.Should().Be("read_content, write_content");
}
Run Code Online (Sandbox Code Playgroud)
您可以使用StringEnumConverter
Json.Net 提供的 而不是定义自定义转换器,以及使用EnumMemberAttribute
代替JsonPropertyAttribute
.
例如,
[JsonConverter(typeof(StringEnumConverter))]
public enum AccessScope
{
[EnumMember(Value="read_content")]
ReadContent,
[EnumMember(Value="write_content")]
WriteContent,
[EnumMember(Value="read_themes")]
ReadThemes,
[EnumMember(Value="write_themes")]
WriteThemes
}
Run Code Online (Sandbox Code Playgroud)
现在你可以反序列化为
var requiredPermissions = new List<AccessScope>()
{
AccessScope.ReadContent,
AccessScope.WriteContent,
};
var result = JsonConvert.SerializeObject(requiredPermissions);
Run Code Online (Sandbox Code Playgroud)
输出
["read_content","write_content"]
Run Code Online (Sandbox Code Playgroud)