json.net deserialize string to nested class

前端 未结 1 1425
栀梦
栀梦 2021-01-14 08:10

I\'m receiving a Json string back from a http request that looks something like this:

{
  \"info\":
     [
        {
           \"calls\":0,
           \"err         


        
相关标签:
1条回答
  • 2021-01-14 08:44

    My test code would not compile with the nested Info class (due to a property naming conflict) so I removed it from within the ResposeEntity class.

    Along with this I fixed some issues with your JSON (your info object was an array and the strings in your errors array needed to be in quotes).

    see below:

    JSON

    {
        info":
            {
                "calls":0,
                "errors":["error1", "error2", "error3"],
                "messages":0,
                "mail":3
            },
        "received":5,
        "valid":3
    }
    

    Classes

    class ResponseEntity
    {
        private Info info;
        private int received;
        private int valid;
    
        [JsonProperty("info")]
        public Info Info
        {
            get { return info; }
            set { info = value; }
        }
    
        [JsonProperty("valid")]
        public int Valid
        {
            get { return valid; }
            set { valid = value; }
        }
    
        [JsonProperty("received")]
        public int Received
        {
            get { return received; }
            set { received = value; }
        }
    }
    
    public class Info
    {
        private int calls;
        private List<string> errors;
        private int messages;
        private int mail;
    
        [JsonProperty("calls")]
        public int Calls
        {
            get { return calls; }
            set { calls = value; }
        }
    
        [JsonProperty("messages")]
        public int Messages
        {
            get { return messages; }
            set { messages = value; }
        }
    
        [JsonProperty("errors")]
        public List<string> Errors
        {
            get { return errors; }
            set { errors = value; }
        }
    
        [JsonProperty("mail")]
        public int Mail
        {
            get { return mail; }
            set { mail = value; }
        }
    }
    

    Test Code

    string json = "{\"info\":{\"calls\":0,\"errors\":[\"error1\", \"error2\", \"error3\"],\"messages\":0,\"mail\":3},\"received\":5,\"valid\":3}";
    
    ResponseEntity ent = JsonConvert.DeserializeObject<ResponseEntity>(json) as ResponseEntity;
    

    Hope this helps.

    0 讨论(0)
提交回复
热议问题