2013-09-11 2 views
0

Я использую .Net 3.0 для десериализации двух разных строк json для класса C#. Вот несколько примеров json:Есть ли .Net DataContract, чтобы включить всех участников из Json?

{"studio" : "mystudio", "name" : "John Doe"} 
{"studio_name" : "mystudio", "name" : "John Doe" } 

Обратите внимание, что строки json отличаются. Могу ли я создать класс как ниже со студией и studio_name как DataMembers ?:

[DataContract] 
    public class StudioMeta 
    { 
     [DataMember] 
     public string Studio_Name { get; set; } 
     [DataMember] 
     public string Studio { get; set; } 
    } 

Если бы я просто включать в себя один элемент данных из каждой строки JSON, это будет правильно десериализации? Или это незаконно?

Кроме того, если все, что я делаю, является десериализацией, нужны ли мне модификаторы ?

+0

Возможно, вы захотите использовать [json.net] (http://json.net), а затем вам не придется использовать эти атрибуты вообще. –

+0

Да, мне очень хотелось бы этого, но я не отвечаю. – dmoss18

ответ

0

См. MSDN documentation. Вы можете использовать

[DataMember (требуется копаться = истина)]

поле (по умолчанию: ложь) и

[DataMember (EmitDefaultValue = ложь)]

Недвижимость. В вашем случае сериализация и наоборот должны работать нормально.

+0

Что такое 'field (default: false)'? – dmoss18

+0

Я имею в виду, что IsRequired по умолчанию false. Поэтому, если текст JSON не включает этот элемент, .NET по-прежнему десериализует объект правильно. – Matthias

+0

Но вы устанавливаете IsRequired в true, разве это не означает, что он сломается, когда он не будет в тексте JSON? – dmoss18

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