0

I have a large nested JSON string that (parent/child). I need to be able to loop through it following the nesting. I have tried various references regarindg newtonsoft but I can't get it to work. I'm sure it must be simple but I can't work it out.

I have created the following object:-

Public Class MenuObject

    Public Property data_tagname As String
    Public Property data_title As String
    Public Property data_menuid As String
    Public Property data_parentid As String
    Public Property data_cmsid As String
    Public Property data_enabled As String
    Public Property data_isparent As String
    Public Property subLevel As List(Of Object)

End Class

And when I try using the following:-

Dim data = JsonConvert.DeserializeObject(Of MenuObject)(strJson)

I get the following error:-

Message=Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'MenuObject' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.

Here is the JSON:-

    [
      {
        "data_tagname": "LI",
        "data_title": "Who We Are\n",
        "data_menuid": "1",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "1",
        "data_isparent": "1",
        "subLevel": [
          {
            "data_tagname": "UL",
            "data_title": "",
            "data_menuid": null,
            "data_parentid": null,
            "data_cmsid": null,
            "data_enabled": null,
            "data_isparent": null,
            "subLevel": [
              {
                "data_tagname": "LI",
                "data_title": "Our Executive Team2\n",
                "data_menuid": "13",
                "data_parentid": "10",
                "data_cmsid": "6",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "About Us\n",
                "data_menuid": "7",
                "data_parentid": "1",
                "data_cmsid": "2",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Hospice Heroes\n",
                "data_menuid": "8",
                "data_parentid": "1",
                "data_cmsid": "4",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Our History\n",
                "data_menuid": "9",
                "data_parentid": "1",
                "data_cmsid": "72",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Our People\n",
                "data_menuid": "10",
                "data_parentid": "1",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "How We're Inspected\n",
                        "data_menuid": "16",
                        "data_parentid": "12",
                        "data_cmsid": "10",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Our Trustees\n",
                        "data_menuid": "14",
                        "data_parentid": "10",
                        "data_cmsid": "7",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Patrons and Celebrity Support\n",
                        "data_menuid": "15",
                        "data_parentid": "10",
                        "data_cmsid": "8",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              },
              {
                "data_tagname": "LI",
                "data_title": "How We're Funded\n",
                "data_menuid": "11",
                "data_parentid": "1",
                "data_cmsid": "9",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Governance\n",
                "data_menuid": "12",
                "data_parentid": "1",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "How to Submit Feedback\n",
                        "data_menuid": "17",
                        "data_parentid": "12",
                        "data_cmsid": "11",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Give With Confidence\n",
                        "data_menuid": "18",
                        "data_parentid": "12",
                        "data_cmsid": "12",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "data_tagname": "LI",
        "data_title": "What We Do\n",
        "data_menuid": "2",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "1",
        "data_isparent": "1",
        "subLevel": [
          {
            "data_tagname": "UL",
            "data_title": "",
            "data_menuid": null,
            "data_parentid": null,
            "data_cmsid": null,
            "data_enabled": null,
            "data_isparent": null,
            "subLevel": [
              {
                "data_tagname": "LI",
                "data_title": "How To Refer\n",
                "data_menuid": "19",
                "data_parentid": "2",
                "data_cmsid": "36",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Hospice Services\n",
                "data_menuid": "20",
                "data_parentid": "2",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "In-patient Units\n",
                        "data_menuid": "26",
                        "data_parentid": "20",
                        "data_cmsid": "37",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Home and Community Care\n",
                        "data_menuid": "27",
                        "data_parentid": "20",
                        "data_cmsid": "38",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Sunflower Centre Day Hospice\n",
                        "data_menuid": "28",
                        "data_parentid": "20",
                        "data_cmsid": "39",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Therapy Services\n",
                        "data_menuid": "29",
                        "data_parentid": "20",
                        "data_cmsid": "40",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Support Groups\n",
                        "data_menuid": "30",
                        "data_parentid": "20",
                        "data_cmsid": "46",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Spritual Care\n",
                        "data_menuid": "31",
                        "data_parentid": "20",
                        "data_cmsid": "47",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Sunflower Friends\n",
                        "data_menuid": "32",
                        "data_parentid": "20",
                        "data_cmsid": "48",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              },
              {
                "data_tagname": "LI",
                "data_title": "Family and Carer Support\n",
                "data_menuid": "21",
                "data_parentid": "2",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "Carers Support\n",
                        "data_menuid": "33",
                        "data_parentid": "21",
                        "data_cmsid": "49",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Quantock House\n",
                        "data_menuid": "34",
                        "data_parentid": "21",
                        "data_cmsid": "50",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Bereavement Support\n",
                        "data_menuid": "35",
                        "data_parentid": "21",
                        "data_cmsid": "51",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Family Support\n",
                        "data_menuid": "36",
                        "data_parentid": "21",
                        "data_cmsid": "52",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              },
              {
                "data_tagname": "LI",
                "data_title": "Patient, Family and Friends Forum\n",
                "data_menuid": "22",
                "data_parentid": "2",
                "data_cmsid": "53",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Training and Education\n",
                "data_menuid": "23",
                "data_parentid": "2",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "Overview\n",
                        "data_menuid": "37",
                        "data_parentid": "23",
                        "data_cmsid": "54",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Our courses\n",
                        "data_menuid": "38",
                        "data_parentid": "23",
                        "data_cmsid": "55",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "The 2018 St. marshes's Lectures\n",
                        "data_menuid": "39",
                        "data_parentid": "23",
                        "data_cmsid": "56",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              },
              {
                "data_tagname": "LI",
                "data_title": "Fit for Future\n",
                "data_menuid": "24",
                "data_parentid": "2",
                "data_cmsid": "57",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "St. marshes's Hospice Funerals\n",
                "data_menuid": "25",
                "data_parentid": "2",
                "data_cmsid": "58",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              }
            ]
          }
        ]
      },
      {
        "data_tagname": "LI",
        "data_title": "Support Us\n",
        "data_menuid": "3",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "1",
        "data_isparent": "1",
        "subLevel": [
          {
            "data_tagname": "UL",
            "data_title": "",
            "data_menuid": null,
            "data_parentid": null,
            "data_cmsid": null,
            "data_enabled": null,
            "data_isparent": null,
            "subLevel": [
              {
                "data_tagname": "LI",
                "data_title": "Glitter Run\n",
                "data_menuid": "40",
                "data_parentid": "3",
                "data_cmsid": "89",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Fundraise for Us\n",
                "data_menuid": "41",
                "data_parentid": "3",
                "data_cmsid": "83",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Community Events\n",
                "data_menuid": "42",
                "data_parentid": "3",
                "data_cmsid": "90",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Sponsorship Events\n",
                "data_menuid": "43",
                "data_parentid": "3",
                "data_cmsid": "109",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Skydive for us!\n",
                "data_menuid": "44",
                "data_parentid": "3",
                "data_cmsid": "102",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Free Will Fortnight 5th - 16th March 2018\n",
                "data_menuid": "45",
                "data_parentid": "3",
                "data_cmsid": "95",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "The Great Somerset Ball\n",
                "data_menuid": "46",
                "data_parentid": "3",
                "data_cmsid": "101",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Corporate\n",
                "data_menuid": "47",
                "data_parentid": "3",
                "data_cmsid": "107",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Personal Donations\n",
                "data_menuid": "48",
                "data_parentid": "3",
                "data_cmsid": "118",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Weekly Prize Draw\n",
                "data_menuid": "49",
                "data_parentid": "3",
                "data_cmsid": "92",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Volunteer for us\n",
                "data_menuid": "50",
                "data_parentid": "3",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "Why volunteer for us?\n",
                        "data_menuid": "51",
                        "data_parentid": "50",
                        "data_cmsid": "91",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Volunteer roles\n",
                        "data_menuid": "52",
                        "data_parentid": "50",
                        "data_cmsid": "131",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "data_tagname": "LI",
        "data_title": "Work For Us\n",
        "data_menuid": "4",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "1",
        "data_isparent": "1",
        "subLevel": [
          {
            "data_tagname": "UL",
            "data_title": "",
            "data_menuid": null,
            "data_parentid": null,
            "data_cmsid": null,
            "data_enabled": null,
            "data_isparent": null,
            "subLevel": [
              {
                "data_tagname": "LI",
                "data_title": "Current Vacancies\n",
                "data_menuid": "53",
                "data_parentid": "4",
                "data_cmsid": "67",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Our Approach to Recruitment\n",
                "data_menuid": "54",
                "data_parentid": "4",
                "data_cmsid": "71",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              }
            ]
          }
        ]
      },
      {
        "data_tagname": "LI",
        "data_title": "Shop With Us\n",
        "data_menuid": "5",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "1",
        "data_isparent": "1",
        "subLevel": [
          {
            "data_tagname": "UL",
            "data_title": "",
            "data_menuid": null,
            "data_parentid": null,
            "data_cmsid": null,
            "data_enabled": null,
            "data_isparent": null,
            "subLevel": [
              {
                "data_tagname": "LI",
                "data_title": "Online Shop\n",
                "data_menuid": "55",
                "data_parentid": "5",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Store Locator\n",
                "data_menuid": "56",
                "data_parentid": "5",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Our shops\n",
                "data_menuid": "57",
                "data_parentid": "5",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "1",
                "subLevel": [
                  {
                    "data_tagname": "UL",
                    "data_title": "",
                    "data_menuid": null,
                    "data_parentid": null,
                    "data_cmsid": null,
                    "data_enabled": null,
                    "data_isparent": null,
                    "subLevel": [
                      {
                        "data_tagname": "LI",
                        "data_title": "Mendip\n",
                        "data_menuid": "60",
                        "data_parentid": "57",
                        "data_cmsid": "0",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Sedgemoor\n",
                        "data_menuid": "61",
                        "data_parentid": "57",
                        "data_cmsid": "0",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "South Somerset\n",
                        "data_menuid": "62",
                        "data_parentid": "57",
                        "data_cmsid": "0",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "Taunton Deane\n",
                        "data_menuid": "63",
                        "data_parentid": "57",
                        "data_cmsid": "0",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      },
                      {
                        "data_tagname": "LI",
                        "data_title": "West Somerset\n",
                        "data_menuid": "64",
                        "data_parentid": "57",
                        "data_cmsid": "0",
                        "data_enabled": "1",
                        "data_isparent": "0",
                        "subLevel": []
                      }
                    ]
                  }
                ]
              },
              {
                "data_tagname": "LI",
                "data_title": "Donating Goods\n",
                "data_menuid": "58",
                "data_parentid": "5",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Book a Furniture Collection\n",
                "data_menuid": "59",
                "data_parentid": "5",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              }
            ]
          }
        ]
      },
      {
        "data_tagname": "LI",
        "data_title": "News\n",
        "data_menuid": "6",
        "data_parentid": "0",
        "data_cmsid": "72",
        "data_enabled": "1",
        "data_isparent": "0",
        "subLevel": []
      },
      {
        "data_tagname": "LI",
        "data_title": "Donate Here\n",
        "data_menuid": "65",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "0",
        "data_isparent": "0",
        "subLevel": []
      },
      {
        "data_tagname": "LI",
        "data_title": "Admin\n",
        "data_menuid": "66",
        "data_parentid": "0",
        "data_cmsid": "0",
        "data_enabled": "0",
        "data_isparent": "1",
        "subLevel": [
          {
            "data_tagname": "UL",
            "data_title": "",
            "data_menuid": null,
            "data_parentid": null,
            "data_cmsid": null,
            "data_enabled": null,
            "data_isparent": null,
            "subLevel": [
              {
                "data_tagname": "LI",
                "data_title": "Log in\n",
                "data_menuid": "67",
                "data_parentid": "66",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Careers\n",
                "data_menuid": "68",
                "data_parentid": "66",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              },
              {
                "data_tagname": "LI",
                "data_title": "Contact\n",
                "data_menuid": "69",
                "data_parentid": "66",
                "data_cmsid": "0",
                "data_enabled": "1",
                "data_isparent": "0",
                "subLevel": []
              }
            ]
          }
        ]
      },
      {
        "data_tagname": "LI",
        "data_title": "Home\n",
        "data_menuid": "70",
        "data_parentid": "0",
        "data_cmsid": "3",
        "data_enabled": "0",
        "data_isparent": "0",
        "subLevel": []
      }
    ]
WNM Derek
  • 55
  • 2
  • 9
  • Hello and Welcome to Stack Overflow! We need to see what you've tried or what research you've done (and why that didn't solve your problem) in order for us to help you. This is a Q&A site, meaning "points in the right direction" is considered too broad. We expect specific questions about specific problems. Please take the [Tour](https://stackoverflow.com/tour) and read [How to ask](https://stackoverflow.com/help/how-to-ask). When you get the time please also visit the [Help Center](https://stackoverflow.com/help/) in order to get a better grasp of how this site works. Thank you! – Visual Vincent Apr 28 '18 at 13:42
  • I will update my post now. – WNM Derek Apr 28 '18 at 13:55
  • Firstly, it should be `JsonConvert.DeserializeObject(Of List(Of MenuObject))(strJson)` as shown in [Cannot deserialize the JSON array (e.g. `[1,2,3]`) into type ' ' because type requires JSON object (e.g. {“name”:“value”}) to deserialize correctly](https://stackoverflow.com/q/22557559/3744182). Secondly, it should be `Public Property subLevel As List(Of MenuObject)`. See https://dotnetfiddle.net/bcKSh8 – dbc Apr 28 '18 at 16:39
  • Thanks dbc - this was the perfect answer! – WNM Derek Apr 29 '18 at 10:33

1 Answers1

2

There is a page called https://quicktype.io/ where you can paste your JSON and get your c# classes generated.

Afterwards you should be able to parse your JSON into c# objects and enumerate your objects like:

class Program
{
    static void Main()
    {
        // read the JSON into variable
        string json = System.IO.File.ReadAllText("input.json");

        // Convert the JSON text into C# object
        var welcomes = Welcome.FromJson(json);
        foreach (var welcome in welcomes)
        {
            // Your logic
        }
    }
}

public partial class SubLevel
{
    [JsonProperty("data_tagname")]
    public PurpleDataTagname DataTagname { get; set; }

    [JsonProperty("data_title")]
    public DataTitle DataTitle { get; set; }

    [JsonProperty("data_menuid")]
    public object DataMenuid { get; set; }

    [JsonProperty("data_parentid")]
    public object DataParentid { get; set; }

    [JsonProperty("data_cmsid")]
    public object DataCmsid { get; set; }

    [JsonProperty("data_enabled")]
    public object DataEnabled { get; set; }

    [JsonProperty("data_isparent")]
    public object DataIsparent { get; set; }

    [JsonProperty("subLevel")]
    public Welcome[] SubLevelSubLevel { get; set; }
}

public partial class Welcome
{
    [JsonProperty("data_tagname")]
    public WelcomeDataTagname DataTagname { get; set; }

    [JsonProperty("data_title")]
    public string DataTitle { get; set; }

    [JsonProperty("data_menuid")]
    public string DataMenuid { get; set; }

    [JsonProperty("data_parentid")]
    public string DataParentid { get; set; }

    [JsonProperty("data_cmsid")]
    public string DataCmsid { get; set; }

    [JsonProperty("data_enabled")]
    public string DataEnabled { get; set; }

    [JsonProperty("data_isparent")]
    public string DataIsparent { get; set; }

    [JsonProperty("subLevel")]
    public SubLevel[] SubLevel { get; set; }
}

public enum PurpleDataTagname { Ul };

public enum DataTitle { Empty };

public enum WelcomeDataTagname { Li };

public partial class Welcome
{
    public static Welcome[] FromJson(string json) => JsonConvert.DeserializeObject<Welcome[]>(json, Converter.Settings);
}

static class PurpleDataTagnameExtensions
{
    public static PurpleDataTagname? ValueForString(string str)
    {
        switch (str)
        {
            case "UL": return PurpleDataTagname.Ul;
            default: return null;
        }
    }

    public static PurpleDataTagname ReadJson(JsonReader reader, JsonSerializer serializer)
    {
        var str = serializer.Deserialize<string>(reader);
        var maybeValue = ValueForString(str);
        if (maybeValue.HasValue) return maybeValue.Value;
        throw new Exception("Unknown enum case " + str);
    }

    public static void WriteJson(this PurpleDataTagname value, JsonWriter writer, JsonSerializer serializer)
    {
        switch (value)
        {
            case PurpleDataTagname.Ul: serializer.Serialize(writer, "UL"); break;
        }
    }
}

static class DataTitleExtensions
{
    public static DataTitle? ValueForString(string str)
    {
        switch (str)
        {
            case "": return DataTitle.Empty;
            default: return null;
        }
    }

    public static DataTitle ReadJson(JsonReader reader, JsonSerializer serializer)
    {
        var str = serializer.Deserialize<string>(reader);
        var maybeValue = ValueForString(str);
        if (maybeValue.HasValue) return maybeValue.Value;
        throw new Exception("Unknown enum case " + str);
    }

    public static void WriteJson(this DataTitle value, JsonWriter writer, JsonSerializer serializer)
    {
        switch (value)
        {
            case DataTitle.Empty: serializer.Serialize(writer, ""); break;
        }
    }
}

static class WelcomeDataTagnameExtensions
{
    public static WelcomeDataTagname? ValueForString(string str)
    {
        switch (str)
        {
            case "LI": return WelcomeDataTagname.Li;
            default: return null;
        }
    }

    public static WelcomeDataTagname ReadJson(JsonReader reader, JsonSerializer serializer)
    {
        var str = serializer.Deserialize<string>(reader);
        var maybeValue = ValueForString(str);
        if (maybeValue.HasValue) return maybeValue.Value;
        throw new Exception("Unknown enum case " + str);
    }

    public static void WriteJson(this WelcomeDataTagname value, JsonWriter writer, JsonSerializer serializer)
    {
        switch (value)
        {
            case WelcomeDataTagname.Li: serializer.Serialize(writer, "LI"); break;
        }
    }
}

public static class Serialize
{
    public static string ToJson(this Welcome[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
}

internal class Converter : JsonConverter
{
    public override bool CanConvert(Type t) => t == typeof(PurpleDataTagname) || t == typeof(DataTitle) || t == typeof(WelcomeDataTagname) || t == typeof(PurpleDataTagname?) || t == typeof(DataTitle?) || t == typeof(WelcomeDataTagname?);

    public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
    {
        if (t == typeof(PurpleDataTagname))
            return PurpleDataTagnameExtensions.ReadJson(reader, serializer);
        if (t == typeof(DataTitle))
            return DataTitleExtensions.ReadJson(reader, serializer);
        if (t == typeof(WelcomeDataTagname))
            return WelcomeDataTagnameExtensions.ReadJson(reader, serializer);
        if (t == typeof(PurpleDataTagname?))
        {
            if (reader.TokenType == JsonToken.Null) return null;
            return PurpleDataTagnameExtensions.ReadJson(reader, serializer);
        }
        if (t == typeof(DataTitle?))
        {
            if (reader.TokenType == JsonToken.Null) return null;
            return DataTitleExtensions.ReadJson(reader, serializer);
        }
        if (t == typeof(WelcomeDataTagname?))
        {
            if (reader.TokenType == JsonToken.Null) return null;
            return WelcomeDataTagnameExtensions.ReadJson(reader, serializer);
        }
        throw new Exception("Unknown type");
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var t = value.GetType();
        if (t == typeof(PurpleDataTagname))
        {
            ((PurpleDataTagname)value).WriteJson(writer, serializer);
            return;
        }
        if (t == typeof(DataTitle))
        {
            ((DataTitle)value).WriteJson(writer, serializer);
            return;
        }
        if (t == typeof(WelcomeDataTagname))
        {
            ((WelcomeDataTagname)value).WriteJson(writer, serializer);
            return;
        }
        throw new Exception("Unknown type");
    }

    public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
    {
        MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
        DateParseHandling = DateParseHandling.None,
        Converters = {
            new Converter(),
            new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
        },
    };
}
Daniel
  • 9,491
  • 12
  • 50
  • 66
  • 1
    Hi,Yes I have seen that. Seems rather long winded though? Is there not a shorter or simpler way to do it? – WNM Derek Apr 28 '18 at 14:54