在C#中反序列化Json - 如何处理空返回值

时间:2009-11-13 09:04:35

标签: c# json

我使用以下代码:

myObj jsonStream = ser.Deserialize<myObj>(jsonStream);

一切正常,直到返回的JSON对其中一个字段的值为null。即:

"name" : null

在反序列化过程中,它会抛出异常。在我的myObj中,我有一个成员:

public string name;

如何使用System.Web.Script.Serialization程序集优雅地处理从我的数据源返回的奇数空值?我试过了:

public string name = "";

但那没用。

3 个答案:

答案 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);
相关问题