将 json 转换为 class 对象

Converting json to class object

我的对象定义为:

public class sendSmsResult
{
    public sendSmsResult()
    {
        MessageIdList=new List<MessageId>();
    }
    
    public string ErrorCode { get; set; }
    public string PacketId { get; set; }
    public List<MessageId> MessageIdList { get; set; }

}

public class MessageId
{
    public MessageId()
    {
        messageid=new List<string>();
    }
    public List<string> messageid { get; set; }
}

执行此操作后:

IRestResponse response = client.Execute(request);

我从“response.Content”中得到 json结果为

 "{\"sendSmsResult\":{\"ErrorCode\":\"0\",\"PacketId\":\"261633886\",\"MessageIdList\":{\"MessageId\":[\"7096779206\",\"-19\"]}}}"

得到 json 字符串后我是 运行 这个:

 JsonConvert.DeserializeObject<sendSmsResult>(response.Content);

报错说:

{"Message":"An error has occurred.","ExceptionMessage":"Error converting value "{"sendSmsResult":{"ErrorCode":"0","PacketId":"261638899","MessageIdList":{"MessageId":["7097068828","-19"]}}}" to type 'UME.WebApi.Models.sendSmsResult'. Path '', line 1, position

您需要 sendSmsResult 的包装器,如下所示:

class sendSmsResultWrapper {
public sendSmsResult sendSmsResult {get;set;}
}

而且,typeof sendSmsResult.MessageIdListMessageId,不是 List<MessageId>!!

物有所值 json2csharp.com(无从属关系)建议您的示例数据采用以下 class 结构:

// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 
    public class MessageIdList    {
        public List<string> MessageId { get; set; } 
    }

    public class SendSmsResult    {
        public string ErrorCode { get; set; } 
        public string PacketId { get; set; } 
        public MessageIdList MessageIdList { get; set; } 
    }

    public class Root    {
        public SendSmsResult sendSmsResult { get; set; } 
    }