ASPNET Core ActionResult属性未序列化

时间:2019-10-11 02:38:59

标签: asp.net-core serialization asp.net-core-webapi

我有这个对象

   byte b = -1;      // OK
   Byte b1 = -1;     // OK
   byte b2 = 255     // Error: value is not in range of 'byte'
   byte b3 = 1 + 1;  // OK
   byte b4 = b + 1;  // Error: not a constant expression

   public void test (byte b) {...}

   test(byte(12));   // OK: explicit narrowing conversion
   test(12);         // Error: not an assignment context.

在我的控制器中:

[DataContract]
public class FilterList<T> : List<T>
{
    [DataMember]
    public int Total { get; set; }
}

我可以在客户端获取MyPOCO列表,但是 l.Total 未序列化。我可以知道我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

这是一种解决方法,您可以尝试使用[JsonObject]属性。但是这些项目不会被序列化,因为JSON容器可以具有属性或项目-但不能同时具有两者。如果两者都需要,则需要添加一个合成列表属性来保存项目。

[JsonObject]还将导致序列化诸如Capacity之类的基类属性,而您可能不希望这样做。若要取消基类属性,请使用MemberSerialization.OptIn。因此,您的最后一堂课应该看起来像这样:

[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class FilterList<T> : List<T>
{
    [JsonProperty]
    public int Total { get; set; }

    [JsonProperty]
    List<T> Items
    {
        get
        {
            return this.ToList();
        }
        set
        {
            if (value != null)
                this.AddRange(value);
        }
    }
}

结果:

enter image description here