How to de-serialize a json object containing variable number of objects and get them as a key value collection in C#?

前端 未结 3 1694
天命终不由人
天命终不由人 2021-01-22 19:21

How can I deserialize the following JSON object and get a collection of Dictionary where the key(string) should be the method name and the object the details in C#.



        
3条回答
  •  南笙
    南笙 (楼主)
    2021-01-22 19:47

    The page you linked to describes how to use DataContractJsonSerializer to deserialize JSON. You can use that serializer to deserialize your "methods" object as a Dictionary, provided you are using .Net 4.5 or later and also set DataContractJsonSerializerSettings.UseSimpleDictionaryFormat = true. Having done this, you can define the following classes:

    public class Method
    {
        public string title { get; set; }
        public string type { get; set; }
        public string password { get; set; }
        public string stepUp { get; set; }
    }
    
    public class Response
    {
        public Dictionary methods { get; set; }
    }
    

    And parse them as follows:

            var settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true };
            var jsonSerializer = new DataContractJsonSerializer(typeof(Response), settings);
            var jsonResponse = jsonSerializer.ReadObject(response.GetResponseStream()) as Response;
    

    If you are using an earlier version of .Net, you may need to use a different serializer such as Json.NET, since, in earlier versions, DataContractJsonSerializer serializes dictionaries as key/value pair arrays.

提交回复
热议问题