有人做出了一个非常糟糕的设计决定,可以为我提供一个具有“特殊”结构的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;
}
然而,由于显而易见的原因,这不起作用。我的问题是:如何处理这个悲伤的案例?
任何帮助都非常感谢!
答案 0 :(得分:3)
您可以尝试使用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);