JSON 响应中的第一个枚举值未正确映射

First Enum Value Not Mapping Correctly In JSON Response

我有以下端点:

        public List<SubBranch> Get(GetSubBranch request)
        {
            SubBranch subBranch = new SubBranch();
            subBranch.BranchId = 1;
            subBranch.Addresses = new List<SubBranchAddress>();
            subBranch.Addresses.Add(new SubBranchAddress { AddressType = AddressType.Postal, City = "A" });
            subBranch.Addresses.Add(new SubBranchAddress { AddressType = AddressType.Test, City = "B" });
            subBranch.Addresses.Add(new SubBranchAddress { AddressType = AddressType.Street, City = "C" });
            return new List<SubBranch> { subBranch };
        }

这是模型:

    public class SubBranch
    {
        public int BranchId { get; set; }
        public List<SubBranchAddress> Addresses { get; set; }
    }
    public class SubBranchAddress
    {        
        public string City { get; set; }
        public AddressType AddressType { get; set; }
    }

    public enum AddressType
    {
        Test,
        Street,
        Postal        
    }

这提供了以下 JSON 响应:

[
  {
    "BranchId": 1,
    "Addresses": [
      {
        "City": "A",
        "AddressType": "Postal"
      },
      {
        "City": "B"
      },
      {
        "City": "C",
        "AddressType": "Street"
      }
    ]
  }
]

如您所见,AddressType 枚举中的第一个值未通过。 我希望 "City": "B" 下方有 "AddressType": "Test"。 我以不同的顺序使用不同数量的枚举值,每次第一个值都不会通过。

为什么会这样,我该如何解决?

这是因为我在 AppHosts.cs 中有 JsConfig.ExcludeDefaultValues = true;

我可以通过将其设置为 false 或为 Test 使用非默认值来修复它:

public enum AddressType
{
    Test = 1,
    Street,
    Postal        
}