2016-02-06 2 views
0

У меня есть класс, как так:Deserialize объекта с пользовательского объекта недвижимости

public class CareTaker 
{ 
    public int Id {get; set;} 
    public string name {get; set;} 
    public DateTime? DateTrained {get; set;} 
    public Certification Certification {get; set;} 
    public List<Certification> ExpiredCertifications {get; set;} 
} 

public class Certification 
{ 
    public int Id {get; set;} 
} 

и моя JSON, как так:

{ 
    "id": 1, 
    "name": "Dogtor", 
    "dateTrained": "01 Feb 2017", 
    "certification": 2, 
    "expiredCertifications": [1,5] 
} 

Я обычно знаю JSON для Certification должно быть действительно как "certification": { "id": 2} , но у меня нет доступа к изменению JSON, поэтому мне нужно выяснить, как конвертировать то, что я получаю ("certification": 2), к моему объекту ... Есть ли способ сделать это с JavascriptSerializer или NewtonSoft, пожалуйста?

+0

Изменить код для 'общественного Список expiredCertifications {получить; задавать; } 'и проанализируйте его в своем классе' Certification' позже. – cramopy

ответ

1

Вы могли бы сделать что-то вроде этого:

public class CareTaker 
{ 
    ... 
    [NotMapped] 
    [JsonProperty(PropertyName = "certification"] 
    public int? CertificationId 
    { 
     get 
     { 
      return Certification?.Id; 
     } 
     set 
     { 
      Certification = new Certification { Id = value; } 
     } 
    } 
    [JsonIgnore] 
    public Certification Certification {get; set;} 
    ... 
} 
+0

спасибо, это отличный способ решить эту проблему! :) – LocustHorde

0

Чтобы правильно генерировать классы, я бы предложил скопировать JSON и открыть файл, в котором вы хотите сохранить классы и в визуальной студии идут в Edit-> Paste специальный-> Вставить JSON как классы

то бы сделать что-то вроде этого:

JavaScriptSerializer ser = new JavaScriptSerializer(); 
var jsonToClasses = ser.Deserialize<RootObject>(json); 
+0

Извините, изменение объекта также не является обязательным, они являются ранее существующими EF-моделями, и я не могу изменить ни JSON, ни модели. У меня было такое же обсуждение с моим TL и менеджером уже несколько раз; Я должен работать с этим, к сожалению! – LocustHorde

+0

Хорошо, поэтому вместо RootObject вы бы использовали CareTaker –

+0

извините, я не думаю, что вы правильно поняли мой вопрос. – LocustHorde

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