Deserializing JSON into one of several C# subclasses

后端 未结 1 1227
無奈伤痛
無奈伤痛 2020-12-06 01:58

I have a json structure that looks something like this:

\"list\":[
  {
    \"type\":\"link\",
    \"href\":\"http://google.com\"
  },
  {
    \"type\":\"imag         


        
1条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-06 02:42

    As @AmithGeorge suggested, you can use a dynamic object to dynamically parse your json object. You can use this great dynamic class for JSON by Shawn Weisfeld. Here is his blog explaining how he do it.

    JavaScriptSerializer jss = new JavaScriptSerializer();
    jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });
    
    dynamic glossaryEntry = jss.Deserialize(json, typeof(object)) as dynamic;
    
    Console.WriteLine("glossaryEntry.glossary.title: " + glossaryEntry.glossary.title);
    Console.WriteLine("glossaryEntry.glossary.GlossDiv.title: " + glossaryEntry.glossary.GlossDiv.title);
    Console.WriteLine("glossaryEntry.glossary.GlossDiv.GlossList.GlossEntry.ID: " + glossaryEntry.glossary.GlossDiv.GlossList.GlossEntry.ID);
    Console.WriteLine("glossaryEntry.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.para: " + glossaryEntry.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.para);
    foreach (var also in glossaryEntry.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso)
    {
        Console.WriteLine("glossaryEntry.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso: " + also);
    }
    

    0 讨论(0)
提交回复
热议问题