2012-11-16 49 views
1

我正在使用asp.net mvc 4 web api。我试图返回记录列表作为JSON响应。我的表包含四个字段字段1,字段2,字段3和字段4和我写的动作一样,如何在asp.net web api中只返回一些字段到json响应

public List<MyTable> GetRecords() 
{ 
return context.mytable.ToList(); 
} 

和我得到的回应一样,

[{"field1":true,"field2":false,"field3":true,"field4":false}] 

现在我需要得到的只是其价值的领域真因此上述响应将被等,

[{"field1":true,"field3":true}] 

我试图与[JsonIgnore]属性,但它被CON在模型类创建时只用等,

[JsonIgnore] 
public string field1{get; set;} 

我怎样才能编程应用jsonignore的领域,使我能够只返回指定的领域。请指导我。

回答

0

可以使忽略的字段为空并且加载这个忽略,而序列化空:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; 
+0

不......我不会在这里处理空值。我需要在真值和假值之间创造条件。我想让它对单个动作没有影响到整个项目 –

+0

我建议你是否可以在控制器中将字段忽略为空。如果是,那么通过上述设置,这些字段将被忽略。以编程方式添加[JsonIgnore]“可能”与反射,但它不会解决用XML(或其他)序列化的目的 – Sando

+1

这里的另一个想法可能是,如果您可以调整您的查询返回较小的字段,然后使用DataReader'动态'(或DataSet转换为“动态”)转换,然后将动态对象直接序列化为响应流。 – Sando

相关问题