2013-04-20 5 views
0

Я использовал «Newtonsoft.Json» в сериализации. У меня есть класс «студент» и класс «Факультет» в моем приложении, когда я сериализую ученика класса, я обязателен, чтобы получить объект Faculty в json-коде.Сериализация объектов 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. – OldIt

+0

Атрибут 'JsonIgnore' влияет только на то, как сериализуется свойство' Faculty' * в классе 'Student'. Если вы сериализуете объект «Faculty» самостоятельно, этот атрибут вообще не повлияет на него. – mroach

Смежные вопросы