how to deserialize a json array with newton json

sdnd2000 41 Reputation points
2021-04-25T18:01:43.14+00:00

Hi, I am trying to deserialize the below json array with newton json, however I got some trouble, please help.

 static void Main(string[] args)
        {
            string json = @"{
  'firstname': 'james',
  'lastname': 'james',
  'gender': 'M',
  'address': [
    'address1','1'
    'address2','2'
  ]
}";

            List<ShippingInfo> shippingInfo = JsonConvert.DeserializeObject<List<ShippingInfo>>(json);
            Console.WriteLine("success");

        }

        public class ShippingInfo
        {
            public string firstname { get; set; }
            public string lastname { get; set; }
            public string gender { get; set; }

            public IList<address> address { get; set; }
        }

        public class address
        {
            public string address1 { get; set; }
            public string address2 { get; set; }
        }

Error: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[JsonTest.Program+ShippingInfo]' 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.

C#
C#
An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
10,279 questions
0 comments No comments
{count} votes

Accepted answer
  1. Viorel 112.5K Reputation points
    2021-04-25T18:30:11.36+00:00

    There are several issues, which were eliminated in the next sample:

    public class ShippingInfo
    {
        public string firstname { get; set; }
        public string lastname { get; set; }
        public string gender { get; set; }
    
        public address address { get; set; }
    }
    
    public class address
    {
        public string address1 { get; set; }
        public string address2 { get; set; }
    }
    
    . . .
    
    string json = @"{
       'firstname': 'james',
       'lastname': 'james',
       'gender': 'M',
       'address': {
          'address1':'1',
          'address2':'2'
       }
    }";
    
    ShippingInfo shippingInfo = JsonConvert.DeserializeObject<ShippingInfo>( json );
    
    0 comments No comments

0 additional answers

Sort by: Most helpful