Quantcast
Channel: How can I deserialize JSON to a simple Dictionary in ASP.NET? - Stack Overflow
Viewing all articles
Browse latest Browse all 23

Answer by Jordan for How can I deserialize JSON to a simple Dictionary in ASP.NET?

$
0
0

I've added upon the code submitted by jSnake04 and Dasun herein. I've added code to create lists of objects from JArray instances. It has two-way recursion but as it is functioning on a fixed, finite tree model, there is no risk of stack overflow unless the data is massive.

/// <summary>/// Deserialize the given JSON string data (<paramref name="data"/>) into a///   dictionary./// </summary>/// <param name="data">JSON string.</param>/// <returns>Deserialized dictionary.</returns>private IDictionary<string, object> DeserializeData(string data){    var values = JsonConvert.DeserializeObject<Dictionary<string, object>>(data);    return DeserializeData(values);}/// <summary>/// Deserialize the given JSON object (<paramref name="data"/>) into a dictionary./// </summary>/// <param name="data">JSON object.</param>/// <returns>Deserialized dictionary.</returns>private IDictionary<string, object> DeserializeData(JObject data){    var dict = data.ToObject<Dictionary<String, Object>>();    return DeserializeData(dict);}/// <summary>/// Deserialize any elements of the given data dictionary (<paramref name="data"/>) ///   that are JSON object or JSON arrays into dictionaries or lists respectively./// </summary>/// <param name="data">Data dictionary.</param>/// <returns>Deserialized dictionary.</returns>private IDictionary<string, object> DeserializeData(IDictionary<string, object> data){    foreach (var key in data.Keys.ToArray())     {        var value = data[key];        if (value is JObject)            data[key] = DeserializeData(value as JObject);        if (value is JArray)            data[key] = DeserializeData(value as JArray);    }    return data;}/// <summary>/// Deserialize the given JSON array (<paramref name="data"/>) into a list./// </summary>/// <param name="data">Data dictionary.</param>/// <returns>Deserialized list.</returns>private IList<Object> DeserializeData(JArray data){    var list = data.ToObject<List<Object>>();    for (int i = 0; i < list.Count; i++)    {        var value = list[i];        if (value is JObject)            list[i] = DeserializeData(value as JObject);        if (value is JArray)            list[i] = DeserializeData(value as JArray);    }    return list;}

Viewing all articles
Browse latest Browse all 23

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>