JsonConvert.DeserializeObject 对象是空字符串解析报错解决办法

JsonConvert.DeserializeObject(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(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){ .... }

你可能感兴趣的:(JsonConvert.DeserializeObject 对象是空字符串解析报错解决办法)