Json.NET中的替代字段类型

时间:2015-11-07 15:37:49

标签: c# json

有人做出了一个非常糟糕的设计决定,可以为我提供一个具有“特殊”结构的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;
}

然而,由于显而易见的原因,这不起作用。我的问题是:如何处理这个悲伤的案例?

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:3)

您可以尝试使用dynamic类型来实现此目的。

Sample

我的样本与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);