我有一个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 IQueryable<Product> Get()
{
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
字段,但不在产品列表中。Json.Net库中是否存在条件[JsonIgnore]
属性。
必须定义一个名为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<Product>()
{
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":