2013-11-01 2 views
0

Я хотел бы десериализации этого JSON в C# класса, но мне нужно, чтобы определить класс первым:Представляют JSON как C# класс

{ 
"Prods": [ 
    { 
     "ID": { 
      "1001": [ 
       { 
        "Name": "Name1", 
        "Prod": "XXX" 
       }, 
       { 
        "Name": "Name2", 
        "Prod": "XXXX" 
       } 
      ] 
     } 
    }, 
    { 
     "ID": { 
      "2001": [ 
       { 
        "Name": "Name3", 
        "Prod": "XXX-000" 
       }, 
       { 
        "Name": "Name4", 
        "Prod": "XXXX-1111" 
       } 
      ] 
     } 
    } 
] 
} 

Я хотел бы десериализацию его в чем-то вроде этого, но и не уверен, что если моя структура JSON соответствует его:

public class Prod 
{ 
    int CATID; 
    Dictionary<string, string> prods = new Dictionary<string, string>(); 
} 

public class Prods 
{ 
    public List<Prod> Products {get;set;} 
} 

Как я должен изменить JSON выше, чтобы соответствовать с моим классом ниже, так что я могу использовать JsonConvert десериализации в него?

Спасибо!

+0

Вы проверили http://msdn.microsoft.com/en-us/library/bb412179.aspx? http://stackoverflow.com/questions/9586585/convert-json-to-a-c-sharp-array имеет аналогичную проблему для решения. – Warty

+0

В ваших JSON есть имена полей, такие как «ID», «Name», «Prod», что означает, что он не будет преобразовываться в словари за один шаг. Лучше всего десериализовать в Списки <.>, а затем оттуда запустить. Выбрать (...). ToDictionary (...). – Emanuel

+0

Вы хотите, чтобы ваш C# соответствовал JSON или вашему JSON, чтобы соответствовать коду C#? Или вы открыты к изменениям? –

ответ

1

Для меня ваш JSON просто выглядит неправильно, поскольку у вас не всегда есть «согласованные» пары имя/значение. Во-первых, я бы определить мой JSON как этот

{ 
    "Prods": 
    [{ 
     "ID": "1001", 
     "Items": 
     [{ 
      "Name": "Name1", 
      "Prod": "XXX" 
     }, 
     { 
      "Name": "Name2", 
      "Prod": "XXXX" 
     }]   
    }, 
    { 
     "ID": "2001", 
     "Items": 
     [{ 
      "Name": "Name3", 
      "Prod": "XXX-000" 
     }, 
     { 
      "Name": "Name4", 
      "Prod": "XXXX-1111" 
     }]   
    }] 
} 

, то я бы следующие классы для обработки данных

public class Item { 
    public string Name { get; set;} 
    public string Prod { get; set;} 
} 

public class Product { 
    public string ID { get; set;} 
    public List<Item> Items { get; set; } 
} 

public class Products { 
    public List<Product> Prods { get; set; } 
} 

, то я бы использовать что-то вроде json.net для обработки сериализации

+0

Да, это тоже сработает! Отлично!! Благодарю. – user1013388

+0

Один вопрос, когда я deserialize в классе, было бы это на один шаг следующим образом: Jsonconvert ... или мне тоже нужно преобразовать других? – user1013388

+0

вам нужно только обработать объект верхнего уровня, то есть 'JsonConvert.DeserializeObject (jsondata);' –

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