我在MVC4非api项目中使用Newtonsoft JSON.NET 4.5r7。
下面我将“id”重命名为DT_RowId,用于DataTables“mDataProp”,但也想要更改数据,例如在序列化期间42 becomes "row_42"。
sealed public class Species
{
[JsonProperty("DT_RowId")]
public long id { get; private set; } // Change me to row_{n}
public int amu { get; private set; }
public string chemicalFormula { get; private set; }
...
}
对于不熟悉该库的人来说,文档有点难以理解,并且缺少示例。
我可以为每个类添加“row_n”属性,但是将视图与模型耦合是evil™
问题是:如何使用JSON.net更改序列化数据以实现此结果?
答案 0 :(得分:0)
从动作而不是返回模型,您可以使用linq查询轻松创建一个匿名对象并将其返回。
public JsonNetResult TestAction()
{
...
var query = species.Select(s => new // species is a collection
{
DT_RowId = .. you can change data as you need from s.id,
amu = s.amu,
chemicalFormula = s.chemicalFormula
...
});
return new JsonNetResult{ Data = query.ToList() };
}