繁体   English   中英

是否可以使用Json.NET在C#中反序列化Shape

[英]Is it possible to deserialize a Shape in C# using Json.NET

已编辑

是否可以反序列化作为形状作为属性的ac#对象?

我有一个Touch对象,它继承自Circle对象,Circle对象继承自Obstacle对象,后者是Shape的属性。

我像这样将一个Touch对象序列化为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);

但是我在这行代码中遇到访问冲突。

我认为它来自我的Obstacle对象中的Shape属性,它的声明如下:

        protected Shape shape;

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

有办法解决这个问题吗?

我找到了进行序列化的方法。 我只是使用[JsonIgnore]从Json序列化中删除了Shape,并使用一种方法创建了它。 我只需要两行而不是一行即可通过序列化创建我的对象:

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

谢谢您的帮助=)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM