使用 JSON.NET 有条件地将 JSON 字符串或数组属性反序列化为 C# 对象? [复制]

2024-04-18

我有一个基于从第三方 API 获取的非常复杂的 JSON 定义的 C# 对象。这是其中的一部分:

{"alarmSummary":"NONE"}

C# 中对应的属性是:

public string alarmSummary {get; set;}

我将使用 JSON.NET 中的典型 JSONConvert 进行转换:

var alarms = JSONConvert.DeserializeObject<MyClass>(jsonString); 

但是,API 将以这种格式将警报作为数组放置,如果没有任何警报作为字符串,则将其放置为“NONE”:

{"alarmSummary" : ["AHHH Something went wrong!!", "I'm on fire!!"]}

这意味着在 C# 中它需要是:

public string[] alarmSummary {get; set;}

如果可以的话,我会让 JSONConvert 将“NONE”字符串反序列化为只有一个条目的数组。有没有办法为此属性设置条件,或者我必须获取整个复杂的 JSON 字符串并手动转换它?


这应该很简单 - 你可以设置你的alarmSummary作为对象,然后具有单独的属性来评估alarmSummary并根据值返回 null 或数组。

    public object alarmSummary { get; set; }

    protected string[] alarmSummaryCasted
    {
        get
        {
            if (alarmSummary is String)
                return null;
            else
                return (string[]) alarmSummary;
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JSON.NET 有条件地将 JSON 字符串或数组属性反序列化为 C# 对象? [复制] 的相关文章

随机推荐