Десериализовать Json в C # - Как обрабатывать нулевые возвращаемые значения - PullRequest
3 голосов
/ 13 ноября 2009

Я использую следующий код:

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

И все работало нормально, пока в JSON, который вернулся, не было нулевого значения для одного из полей. i.e.:

"name" : null

В процессе десериализации возникает исключение. В моем myObj у меня есть участник:

public string name;

Как я могу изящно обработать нечетное нулевое значение, возвращаемое из моего источника данных, используя сборку System.Web.Script.Serialization? Я попробовал:

public string name = "";

Но это не сработало.

Ответы [ 3 ]

1 голос
/ 13 ноября 2009

Возможно, проблема кроется где-то еще, потому что следующий код работал нормально для меня, используя JavaScriptSerializer (он корректно обрабатывал ноль без каких-либо исключений):

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);
    }
}
1 голос
/ 13 ноября 2009

Попробуйте использовать обнуляемый тип

public string? name;
0 голосов
/ 10 октября 2018

Вы можете предоставить настройки JsonConvert.DeserializeObject, чтобы сообщить ему, как обрабатывать нулевые значения, в данном случае, и многое другое:

var settings = new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore,
                        MissingMemberHandling = MissingMemberHandling.Ignore
                    };
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...