deserialize json array list in c#
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.
Roland
Nothing else to say that I haven't already at rolandsdev.blog.
Updated on June 18, 2022Comments
-
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 almost 7 years
using System.Runtime.Serialization.Json;
required forDataContractJsonSerializer
. Compared tousing System.Web.Script.Serialization;
required forJavaScriptSerializer
.