相关疑难解决方法(0)

杰克逊 - 反序列化一个基础枚举

是否可以反序列化具有一个索引的枚举?

enum Status {
  Active,
  Inactive
}
Run Code Online (Sandbox Code Playgroud)

{status:1}表示Status.Active,但杰克逊使其成为Status.Inactive :(

java enums json jackson

17
推荐指数
2
解决办法
2万
查看次数

使用枚举数组反序列化 json

使用枚举:

namespace AppGlobals
{
    [JsonConverter(typeof(JsonStringEnumConverter))]
    public enum BoardSymbols
    {
        [EnumMember(Value = "X")]
        First = 'X',
        [EnumMember(Value = "O")]
        Second = 'O',
        [EnumMember(Value = "?")]
        EMPTY = '?'
    }
}
Run Code Online (Sandbox Code Playgroud)

我想为我的 api 定义一个模型:

using System;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
using Newtonsoft.Json;

namespace Assignment_1
{
    public class MyRequest
    {
//...
        [Required]
        [MinLength(9)]
        [MaxLength(9)]
        [JsonProperty("changeTypes", ItemConverterType = typeof(JsonStringEnumConverter))]
        public AppGlobals.BoardSymbols[] GameBoard { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪里GameBoard应该序列化为 JSON 作为字符串数组,其名称由EnumMember属性指定。这种方法改编自Deserialize json character as enumeration。然而,它不起作用。如果我将枚举更改为:

    [JsonConverter(typeof(JsonStringEnumConverter))]
    public enum …
Run Code Online (Sandbox Code Playgroud)

c# asp.net json.net asp.net-core-webapi asp.net-core-3.1

12
推荐指数
1
解决办法
1万
查看次数