2016-11-13 2 views
0

Базовый класс содержит свойство, которое спрятано новым свойством в подклассе, но другого типа. при десериализации я сталкиваюсь с проблемой. Я не могу изменить имя свойства в C# или json, но, если возможно, может добавить пространство имен.Как сериализовать объект C# в Json с пространством имен. Если возможно, то каким-то образом

namespace xyz 
{ 
    public class A 
    { 
     public ICollection<xyz.OrganizationAttribute> OrganizationAttributes { get; set; } 
    } 
} 

namespace pqr 
{ 
    public class AX : A 
    { 
     public new ICollection<pqr.OrganizationAttribute> OrganizationAttributes { get; set; } 
    } 
} 

Update:

JsonConvert.SerializeObject(axObject, new JsonSerializerSettings 
    { 
     PreserveReferencesHandling = PreserveReferencesHandling.Objects, 
     ReferenceLoopHandling = ReferenceLoopHandling.Serialize, 
     MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead, 
     DefaultValueHandling = DefaultValueHandling.Ignore 
    }); 

    JsonConvert.DeserializeObject<A>("axjsonString", new JsonSerializerSettings 
    { 
     MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead 
    }); 

Любая помощь приветствуется. Спасибо

ответ

0

Основываясь на том, что вы сказали в комментариях, нет способа иметь «pqr.OrganizationAttribute» в классе A, который не связан с JSon или десериализацией, именно так работает ООП. Скрытие метода или поля в классе распространяется вниз в иерархии наследования, поэтому, когда вы говорите о A, вы не можете говорить о полях, которые такие дети, как AX, переопределены.

Вы можете прочитать больше об этом here

Edit

Все права я получил то, что вы хотите делать. Используйте это:

public static A FromJson(string input) 
{ 
    var json = JToken.Parse(input); 
    json["OrganizationAttribute"].Remove(); 
    return JsonConvert.DeserializeObject<A>(json.ToString()); 
} 
+0

Да, вы правы, у объекта не может быть «pqr.OrganizaitonAttribute». Я просто хочу игнорировать OrganizationAttributes, когда я десериализую AX json для объекта A. Я не могу изменить класс A. –

+0

@IrshadAli см. Редактирование. Вы хотите манипулировать JSon. Для записи я должен сказать, что не рекомендуется использовать JSon, созданный из одной модели, для десериализации в другую модель. – Emad

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

  • Нет связанных вопросов^_^