我有一个Asp.Net WebApi项目,我想返回Json格式的产品列表和一个特定的产品。
这是我的产品型号:
public class Product { public int Id { get; set; } public string ShortString { get; set; } public string LongString { get; set; } }
这是我的ApiController:
public class ProductController : ApiController { public IQueryableGet() { return Context.Products; } public IHttpActionResult Get(int id) { var p = Context.Products.FirstOrDefault(m => m.Id == id); if (p == null) return NotFound(); return Ok(p); } }
我想返回LongString
一种特定产品中的字段,而不是产品列表中的字段。[JsonIgnore]
Json.Net库中是否有任何条件属性。
您必须定义一个公共方法,该方法的名称ShouldSerialize{PropertyName}
将在类内部返回bool。
public class Product { public int Id { get; set; } public string ShortString { get; set; } public string LongString { get; set; } public bool ShouldSerializeLongString() { return (Id < 2); //maybe a more meaningful logic } }
测试它
var l = new List() { new Product() {Id = 1, ShortString = "s", LongString = "l"}, new Product() {Id = 2, ShortString = "s", LongString = "l"} }; Console.WriteLine(JsonConvert.SerializeObject(l));
结果是
[{“ Id”:1,“ ShortString”:“ s”,“ LongString”:“ l”},{“ Id”:2,“ ShortString”:“ s”}]