troubleshooting Question

How to deserialize JSON data list into .NET generic collection

Avatar of RichardKline
RichardKline asked on
.NET ProgrammingRESTJSON
1 Comment1 Solution1888 ViewsLast Modified:
I am working with a REST data source.  Single row returns aren't a problem as I can deserialize them using something like:
 JsonConvert.DeserializeObject(Of myInstantiatedClass)(httpResponseContent)

Retrieving a data list isn't a problem either.  But I am unable to deserialize it (using Newtonsoft.Json) into a .NET LIST collection.   A view of the simplified data looks like:
{
	"results":[
	{
		"id":"_198711_1"
	},
	{
		"id":"_198710_1"
	},
	]
}

I am using vb.net in this project but please feel free to send hints in c#!  I've tried various things including IEnumerate.  Simplifed snippet of the original code looks like this:
Public Class myClass
        Public Property id As String
End Class

...

 Dim myInstantiatedClass As New List(Of myClass)
        Dim response = Await client.GetAsync(Uri)
        If response.IsSuccessStatusCode Then
            Dim httpResponseContent = Await response.Content.ReadAsStringAsync()
            Try
                ' NEXT LINE IS WHERE ERRORS ARE THROWN 
                myInstantiatedClass = JsonConvert.DeserializeObject(Of List(Of InstantiatedClass ))(httpResponseContent)
            Catch jsonException As Newtonsoft.Json.JsonSerializationException
                Dim s As String = jsonException.Message
            End Try
        End If

The error code (using original variable and class names) reads:
"Cannot deserialize the current JSON object (e.g. {""name"":""value""}) into type 'System.Collections.Generic.List`1[BbRestApiExplorer.CourseGradeColumn]' 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<T>) 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 'results', line 1, position 11."

Any thoughts?   Thank you for your time.
ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 1 Answer and 1 Comment.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 1 Comment.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros