C# 如果反序列化期间字符串为空,请输入默认值

C# 如果反序列化期间字符串为空,请输入默认值,c#,json.net,C#,Json.net,我有一个这样的模型: public class Artwork { public string small { get; set; } public string medium { get; set; } public string large { get; set; } public string @default { get; set; } } 我使用这个模型来反序列化艺术品路径。当其中一个字符串为空时,我希望设置一个默认路径,以便仍然可以显示图片。我尝试使

我有一个这样的模型:

public class Artwork
{
    public string small { get; set; }
    public string medium { get; set; }
    public string large { get; set; }
    public string @default { get; set; }
}
我使用这个模型来反序列化艺术品路径。当其中一个字符串为空时,我希望设置一个默认路径,以便仍然可以显示图片。我尝试使用Json.NET库中的某些属性:

[DefaultValue("path/to/any/picture")]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
但是,当反序列化时,它抛出一个“System.NullReferenceException”时,它不起作用


反序列化时获取路径时,如何显示这些图片?当路径为空时,如何显示默认图片?

我通过这样做解决了问题

public class Artwork
{
    private static string defaultAtwork = "https://pixabay.com/static/uploads/photo/2016/01/06/07/06/bokeh-1123696_960_720.jpg";
    private string _small = defaultAtwork;
    private string _medium = defaultAtwork;
    private string _large = defaultAtwork;
    private string _default = defaultAtwork;

    public string small
    {
        get { return _small; }
        set { _small = value; }
    } 
    ...
}

public class Album
{
    private Artwork _artwork = new Artwork();
    [JsonProperty(NullValueHandling = NullValueHandling.Include)]
    public Artwork artwork
    {
        get { return _artwork; }
        set { _artwork = value; }
    }

我这样做设法解决了我的问题

public class Artwork
{
    private static string defaultAtwork = "https://pixabay.com/static/uploads/photo/2016/01/06/07/06/bokeh-1123696_960_720.jpg";
    private string _small = defaultAtwork;
    private string _medium = defaultAtwork;
    private string _large = defaultAtwork;
    private string _default = defaultAtwork;

    public string small
    {
        get { return _small; }
        set { _small = value; }
    } 
    ...
}

public class Album
{
    private Artwork _artwork = new Artwork();
    [JsonProperty(NullValueHandling = NullValueHandling.Include)]
    public Artwork artwork
    {
        get { return _artwork; }
        set { _artwork = value; }
    }

当你的c#完成处理后,你对
艺术品
做的最后一件事是什么?它是从控制器返回的视图模型的一部分吗?您是否使用
JsonConvert.SerializeObject
手动序列化它?我正在我的视图({binding artwork.medium})中绑定它。我不是手动序列化,我只是在做JsonConvert.DeserializeObject(e.result),SearchArtister是另一个包含Artwork的模型,您可以创建一个吗?当反序列化它时会抛出一个NullReferenceException,或者当反序列化完成后访问它时?您确定它是JSON DefaultValueAttribute而不是Microsoft DefaultValueAtribute吗?当您的c#完成时,您对
Artwork
做的最后一件事是什么处理它?它是从控制器返回的视图模型的一部分吗?您是否使用
JsonConvert.SerializeObject
手动序列化它?我正在我的视图({binding artwork.medium})中绑定它。我不是手动序列化,我只是在做JsonConvert.DeserializeObject(e.result),SearchArtister是另一个包含Artwork的模型。你能做一个吗?当反序列化时抛出NullReferenceException,或者当反序列化完成后访问它时?你确定它是JSON DefaultValueAttribute而不是Microsoft DefaultValueAtribute吗?