如何在使用JSON.NET进行序列化期间更改数据?

时间:2012-06-22 16:18:37

标签: .net asp.net-mvc json datatables json.net

我在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更改序列化数据以实现此结果?

1 个答案:

答案 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() };

 }