Kat*_*Kat 5 .net c# serialization json json.net
我有一个基于从第三方 API 获取的非常复杂的 JSON 定义的 C# 对象。这是其中的一部分:
{"alarmSummary":"NONE"}
Run Code Online (Sandbox Code Playgroud)
C# 中对应的属性是:
public string alarmSummary {get; set;}
Run Code Online (Sandbox Code Playgroud)
我将使用 JSON.NET 中的典型 JSONConvert 进行转换:
var alarms = JSONConvert.DeserializeObject<MyClass>(jsonString);
Run Code Online (Sandbox Code Playgroud)
但是,API 将以这种格式将警报作为数组放置,如果没有任何警报作为字符串,则将其放置为“NONE”:
{"alarmSummary" : ["AHHH Something went wrong!!", "I'm on fire!!"]}
Run Code Online (Sandbox Code Playgroud)
这意味着在 C# 中它需要是:
public string[] alarmSummary {get; set;}
Run Code Online (Sandbox Code Playgroud)
如果可以的话,我会让 JSONConvert 将“NONE”字符串反序列化为只有一个条目的数组。有没有办法为此属性设置条件,或者我必须获取整个复杂的 JSON 字符串并手动转换它?
这应该很简单 - 您可以将您的alarmSummary
as 对象设置为,然后具有单独的属性,alarmSummary
根据值计算并返回 null 或数组。
public object alarmSummary { get; set; }
protected string[] alarmSummaryCasted
{
get
{
if (alarmSummary is String)
return null;
else
return (string[]) alarmSummary;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3951 次 |
最近记录: |