WebApi returns 空 JSON 而不是序列化对象

WebApi returns empty JSON instead of serialized object

如此简单,但我不知道为什么会失败。在 WebAPI 2.0 ASP.NET MVC(预核心)控制器方法中,我有这个:

[Route("GetItem")]
[HttpGet]
public ItemVM GetItem() {
    var item = new ItemVM();  // Constructor initializes
    return item;
}

当我 运行 代码时,调试器在项目中显示:

item          {ViewModels.ItemVMs.ItemVM}
    firstItem {ViewModels.ItemVMs.FirstItemVM}
        id       0
        archived false
        name     null

然而 WebAPI returns 只有这个:

{}

我已经尝试过像 Newtonsoft json serializer returns empty object 这样的建议,但是 Visual Studio 2017 说 CreateProperties 不存在可以覆盖。

如有任何帮助,我们将不胜感激。

编辑:

大声笑我告诉过你这是一个简单的答案。这是 class:

public class ItemVM {
    FirstItemVM firstItem { get; set; }
    
    public ItemVM() {
        this.firstItem = FirstItemVM.ToMap( new Entities.Item());
    }
}

public class FirstItemVM {
    public int id { get; set; }
    public bool archived { get; set; }
    public string name { get; set; }

    public static readonly Expression<Func<Entities.FirstItem, FirstItemVM>> 
        Map (e) => new FirstItemVM {
            id = e.id,
            archived = e.archived,
            name = e.name
    };
    public static readonly Func<Entities.FirstItem, FirstItemVM>
        ToMap = FirstItemVM.Map.Compile();
}

很可能 ItemVM.firstItem 不是 public(例如,内部),并且 JSON 序列化器默认只会序列化 public 属性(除非你 non-public 属性 显式序列化)。