2011-08-12 45 views
0

如何通过控制器的方法将我的对象转换为json时跳过某些属性?在mvc json结果中跳过属性

public JsonResult GetPerson(int PersonId) 
{ 
    Person thisPerson = Person.GetById(PersonId); 
    return Json(thisPerson); //Please strip SecretAlterEgoName from your results please! 
} 

class Person 
{ 
    int PersonId { get; set; } 
    string Name { get; set; } 
    string SecretAlterEgoName { get; set; } //Must not send this! No on must know! 
} 

我想避免这种情况: { “PERSONID”:3, “名”: “彼得·帕克”, “SecretAlterEgoName”: “蜘蛛侠”}

,反而显示这一点: { “PersonId”:3,“Name”:“Peter Parker”}

我希望避免必须使用StringBuilder来生成我的json字符串,并避免创建一个新的对象,使用较少的属性来传输。

回答

4

我相当确定 - 但现在无法测试 - 您可以从匿名类型生成JSON,并且只创建您在创建类型时感兴趣的字段:

public JsonResult GetPerson(int PersonId) 
{ 
    Person thisPerson = Person.GetById(PersonId); 
    return Json(new { thisPerson.PersonId, thisPerson.Name }); 
}