Json.NET中的可选字段类型
本文关键字:字段 类型 NET Json | 更新日期: 2023-09-27 18:21:10
有人做了一个非常糟糕的设计决定,可以为我提供一个具有"特殊"结构的JSON。简化问题:
{
"messed-up": "string"
}
{
"messed-up": { "nested": "value" }
}
基本上,字段(在我的例子中隐藏得很深)可以是字符串,也可以是更复杂的对象。我需要创建这样一个类结构,允许我:
- 执行序列化/反序列化
- 生成架构
因此,我需要这样的东西:
public class NotFunny
{
[JsonProperty("messed-up", NullValueHandling = NullValueHandling.Ignore)]
public string messedUp;
[JsonProperty("messed-up", NullValueHandling = NullValueHandling.Ignore)]
public Alternative messedUpAlternative;
}
public class Alternative
{
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string nested;
}
然而,由于显而易见的原因,这是行不通的。我的问题是:如何处理这个令人悲伤的案件?
非常感谢您的帮助!
您可以尝试使用dynamic
类型来实现此目的。
样品
我的样品与Newtonsoft.Json:
using Newtonsoft.Json.Linq;
dynamic data1 = JObject.Parse(str1);
if (data1.messed_up is JValue)
Console.WriteLine(data1.messed_up);
if (data1.messed_up is JObject)
Console.WriteLine(data1.messed_up.nested);