首页 文章

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

提问于
浏览
1

我有以下 endpoints :

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" . 我用不同的顺序玩了不同数量的枚举值,每次第一个值都没有通过 .

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

1 回答

  • 1

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

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

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

相关问题