JsonConvert.DeserializeObject<U>(resultJson) 遇到对象是空字符串, 解析报错解决办法
正常的json 引用类型返回空时应为null, 但是使用非强类型语言时此处可以时空字符串, 这样导致c# JsonConvert.DeserializeObject解析失败,
public class StudentResult{
public Student student{ get; set; }
}
public class Student{
public string name {get;set;}
public int age {get;set;}
}
var resultJson ='{"studeng":null}';
var data = JsonConvert.DeserializeObject<StudentResult>(resultJson);//解析报错
方法一: 将DTO添加构造函数即可正确解析
public class StudentResult{
public Student student{ get; set; }
public void StudentResult(Student s){
student = s;
}
}
public class Student{
public string name {get;set;}
public int age {get;set;}//如果json中 age 值为null 即值类型为null 则此处需要改为可为null类型 int? 即可
}
方法二: 也可以用JObject 或 JArray 解析某个json值, 获取该值之后判断解析, 并自己组装成实例对象即可.
var resultJson ='{"studeng":null}';
var jobj = JObject.Parse(resultJson);
var student = jobj.GetValue("student").ToString();
if(string.IsNullOrWhiteSpace(student){ .... }
网友评论