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 属性 显式序列化)。
如此简单,但我不知道为什么会失败。在 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 属性 显式序列化)。