2013-04-20 42 views
0

我在序列化中使用了“Newtonsoft.Json”。 在我的应用程序中,我有班级“学生”和班级“学院”,当我序列化班级学生时,我强制以json代码获取Faculty对象。JSonNet对象序列化

这个班级学生,我想序列化为json。一流的学生里面

public class Student 
      { 
       public int ID { get; set; } 
       **public Faculty Faculty { get; set; } 
       public double AVG { get; set; } 
       public DateTime DateOfBirth { get; set; } 
       public string EducationInfo { get; set; } 
       public string FatherName { get; set; } 
       public string FirstName { get; set; } 
       public string LastName { get; set; } 
       public string MotherName { get; set; } 
       public string Password { get; set; } 
       public string PersonalInfo { get; set; } 
} 

一流的师资:连载后

public class Faculty 
     { 
      public int id { get; set; } 
      public string name { get; set; } 
      public Student[] student { get; set; } 
     } 

代码:

{ 
     "ID": 24, 
     "Faculty": { 
     "id": 0, 
     "name": "engen", 
     "student": null 
       }, 
     "AVG": 3.0, 
     "DateOfBirth": "1990-02-02T00:00:00", 
     "EducationInfo": "GOOD", 
     "FatherName": "EEWF", 
     "FirstName": "FFEWR", 
     "LastName": "ERF", 
     "MotherName": "ERF", 
     "Password": "e2DW", 
     "PersonalInfo": "ERF", 
    } 

如何最后代码转换为序列相同的是,我想展现学院不是我想要显示名字的对象。处理这种

{ 
     "ID": 24, 
     "Faculty": "engen", 
     "AVG": 3.0, 
     "DateOfBirth": "1990-02-02T00:00:00", 
     "EducationInfo": "GOOD", 
     "FatherName": "EEWF", 
     "FirstName": "FFEWR", 
     "LastName": "ERF", 
     "MotherName": "ERF", 
     "Password": "e2DW", 
     "PersonalInfo": "ERF", 
    } 

回答

1

一种方法是使用Json.Net财产属性

试试这个:

[JsonIgnore] 
public Faculty Faculty { get; set; } 

[JsonProperty("Faculty")] 
public string FacultyName { get { return Faculty.Name; } } 

这样做的缺点是,你将无法反序列化JSON返回到.NET对象。但是你会得到你想要的输出。

+0

如果我把“JsonIgnore”代码中。我可以在其他josn序列化中使用faculty对象。 – OldIt 2013-04-20 15:37:34

+0

'JsonIgnore'属性只会影响'Student'类中'Faculty' *属性*的序列化方式。如果你自己序列化一个'Faculty'对象,那么这个属性根本不会影响它。 – mroach 2013-04-20 15:44:46