Newtonsoft.Json:展平通用引用属性

时间:2018-03-23 13:01:56

标签: c# json json.net

最简单的解释方法是展示示例,以便我开始使用:

我有三个对象:

public class Foo
{
    public string FooString { get; set; }
}

public class Bar
{
    public string BarInt { get; set; }
}

public class Message<T>
{
    public string Subject { get; set; }
    public T Value { get; set }
}

反序列化为JSON时,Message<Foo>变为

{
    "subject": "FooSubject",
    "value": {
        "fooString": "abc"
    }
}

Message<Bar>变为

{
    "subject": "BarSubject",
    "value": {
        "barInt": 123
    }
}

有没有办法使用Newtonsoft.JSON将内部通用对象合并到Message中?或者是否有另一种方法将两个C#类合并到同一个JSON对象中?意味着Message的最终结果如下所示:

{
    "subject": "FooSubject",
    "fooString": "abc"
}

这当然可能会导致命名冲突,但在我的情况下这很容易避免。我不想使用继承来处理它,因为Foo / Bar并不总是Message,但是消息将包含其中一个。

另一件事是通用对象可能包含我 想要展平的其他对象。

谢谢!

0 个答案:

没有答案