2016-01-21 5 views
0

EDITEDМожно ли десериализации формы в C# с помощью Json.NET

Можно ли десериализаций C# объекта, который, как Shape в качестве атрибута?

У меня есть объект Touch, который наследуется от объекта Circle Object, который наследуется от объекта Obstacle Object, который является атрибутом Shape as.

я сериализовать сенсорный объект JSON как это:

 Touch touch = new Touch(0.15, 0, 4.05); 
     touch.Shape.Stroke = Brushes.Black; 

     string json = JsonConvert.SerializeObject(touch); 

Я хотел бы десериализации этот объект, используя его JSON, например:

 Touch test = JsonConvert.DeserializeObject<Touch>(json); 

Но я получаю нарушение прав доступа с эта строка кода.

Я думаю, что это происходит из атрибута Shape в моем Препятствие объект, который declarated так:

 protected Shape shape; 

     [JsonProperty(PropertyName = "Shape")] 
     public Shape Shape 
     { 
      get { return shape; } 
      set { this.shape = value; } 
     } 

Есть ли способ, чтобы исправить эту проблему?

+0

Попробуйте герметизирующего это – user853710

+0

Это не ясно, что вы хотите достичь. У вас есть JSON Document с объектами Shape, которые нужно десериализовать на объекты C#, или у вас есть объекты C#, которые вы хотите сериализовать в JSON? –

+0

Кроме того, это просто класс, который может содержать данные. Можете ли вы показать, как вы выполняете сериализацию/десериализацию? –

ответ

0

Я нашел способ моей сериализации. Я просто удалил свою форму из Json Serialization, используя [JsonIgnore], и я создаю ее с помощью метода. Мне просто нужно две строки вместо одной, чтобы создать свой объект с помощью сериализации:

Touch test = JsonConverter.Deserialize<Touch>(json); 
test.CreateShape(); 

Спасибо за вашу помощь =)

+0

Но это не будет десериализовать любую Shape, хранящуюся в Json, - это просто создаст новую Shape, как только вы десериализуете объект Touch. –

+0

Все объекты, которые я создаю, также создают правильную форму, поэтому на данный момент это не проблема =) –

+0

Хорошо, если это сработает для вас - это, возможно, решило проблему, которая у вас была, но она не отвечала на ваш вопрос спросил. –

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