Reputation: 55
I have the following Json:
{
"Id":"2727",
"Region":"US",
"Data":[
{
"Title":"Director",
"JobDescription":"Coordinates the department activity",
"Department":"HR"
},
{
"Title":"Programmer",
"JobDescription":"Enterprise software developer",
"Department":"FR"
}
]
}
My format looks like this:
public class Data
{
public string Title { get; set; }
public string JobDescription { get; set; }
public string Department { get; set; }
}
public class Format
{
public string Id { get; set; }
public string Region { get; set; }
public List<Data> Data {get; set;}
}
I have tried to deserialize it like this:
var objects = JsonConvert.DeserializeObject<IEnumerable<Format>>(File.ReadAllText("mockJson.json")).ToList();
I am getting this exception:
An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.IEnumerable`1[JSONParsingExample.Format]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly. To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. Path 'GlobalOrgId', line 2, position 15.
Upvotes: 2
Views: 499
Reputation: 636
Just posting this as an answer because I think its worth making it more visible. I assumed the method call was going to have some issues with nesting lists inside a json, but I'm pleased to see it works.
Format format = JsonConvert.DeserializeObject<Format>(File.ReadAllText("mockJson.json"));
I inspected the elements and they all seem to be where they are supposed to be.
Just be careful because JsonConvert.DeserializeObject<T>
returns an object of type T
, not IEnumerable<T>
.
When working with JSON in .NET I'd recommend moving over to the new built in stuff.
https://devblogs.microsoft.com/dotnet/net-core-image-processing/
Upvotes: 1