我使用以下代码:
myObj jsonStream = ser.Deserialize<myObj>(jsonStream);
一切正常,直到返回的JSON对其中一个字段的值为null。即:
"name" : null
在反序列化过程中,它会抛出异常。在我的myObj中,我有一个成员:
public string name;
如何使用System.Web.Script.Serialization程序集优雅地处理从我的数据源返回的奇数空值?我试过了:
public string name = "";
但那没用。
答案 0 :(得分:1)
尝试使用nullable type
public string? name;
答案 1 :(得分:1)
也许问题出在其他地方,因为以下代码使用JavaScriptSerializer对我很好(它正确处理了null而没有抛出任何异常):
public class MyObj
{
public string name;
}
class Program
{
static void Main(string[] args)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
var json = "{\"name\" : null}";
var myObj = ser.Deserialize<MyObj>(json);
Console.WriteLine(myObj.name);
}
}
答案 2 :(得分:0)
您可以为JsonConvert.DeserializeObject提供设置,以告诉它如何处理空值(在这种情况下以及更多):
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);