deserialize json array list in c#

11,026

You have to create this class and create a method like below :

   public class Demo
   {
      public string Name;
      public string Type;
      public string Value;
      public string ChildContentType;
      public string ChildMetadata;
   }

    public void Deserialize()
    {
        string jsonObjString = "[{\"Name\": \"Description\",\"Type\": \"Text\",\"Value\": \"XXX\",\"ChildContentType\": \"Value\",\"C??hildMetadata\": \"YYY\"}]";
         var ser = new JavaScriptSerializer();
         var arreyDemoObj = ser.Deserialize<Demo[]>(jsonObjString);

         foreach (Demo objDemo in arreyDemoObj)
         {
             //Do what you want with objDemo
         }
      }

Note that you need to add reference for JavaScriptSerializer.

Share:
11,026
Roland
Author by

Roland

Nothing else to say that I haven't already at rolandsdev.blog.

Updated on June 18, 2022

Comments

  • Roland
    Roland almost 2 years

    I'm working on a project which has as backend mainly C#, but I'm not an experienced C# dev so I'm not able to figure out hot to fix a json deserialization of an list of objects. The following function is what takes care of the deserialization, but I get an error :

    using System.IO;
    using System.Web;
    using Raven.Imports.Newtonsoft.Json;
    
    namespace Corina.Web.Handlers
    {
        public class JsonRequestHandler
        {
            public T Handle<T>(HttpContextBase context)
            {
                string requestData;
    
                context.Request.InputStream.Position = 0;
                using (var inputStream = new StreamReader(context.Request.InputStream))
                {
                    requestData = inputStream.ReadToEnd();
                }
    
                return JsonConvert.DeserializeObject<T>(requestData, new Raven.Imports.Newtonsoft.Json.Converters.StringEnumConverter());           
            }
        }
    }
    

    Error :

    Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'Corina.Web.Views.DocumentViewModel' 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.

    Can anyone tell me how do I make the deserialization on a list of objects instead of an object ?

  • Matt
    Matt almost 7 years
    using System.Runtime.Serialization.Json; required for DataContractJsonSerializer. Compared to using System.Web.Script.Serialization; required for JavaScriptSerializer.