将 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.MessageIdList
是 MessageId
,不是 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; }
}
我的对象定义为:
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.MessageIdList
是 MessageId
,不是 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; }
}