重命名Json对象fieldName

时间:2013-01-12 23:04:43

标签: c# jquery asp.net-mvc entity-framework

我正在使用MVC c# 我有一个

的对象
public class Person
{
        public int TypeId { get; set; }
        public string Code { get; set; }

}

我有一个代码为这个对象重新生成JSON对象,就像这样

    return Json(personCodeStore.GetBusinessCodes());

但是当我在客户端收到此消息时,我希望能够从

重命名字段名称
TypeId to value
Code  to text

我不想像MVC3 JSON Serialization: How to control the property names?一样使用DataContractSerializer 因为我使用EF 5.x并且每次更新模型和.tt文件运行时它都会覆盖我的更改,并且它会在我不想要的所有视图上使用此修改后的属性。

那么有什么方法可以在我序列化它或者一旦我使用jquery进入客户端时重命名这个?

1 个答案:

答案 0 :(得分:3)

您可以简单地使用LINQ并返回一个投射原始结果的匿名对象:

var businessCodes = personCodeStore.GetBusinessCodes();
return Json(businessCodes.Select(x => new 
{
    value = x.TypeId,
    text = x.Code
}));

现在,您将获得以下内容:

[
    { "value": 1, text = "text 1" },
    { "value": 2, text = "text 2" },
    { "value": 3, text = "text 3" }
    ...
]