使用 Json.NET,如何将两个需要序列化的 C# 对象合并在一起?
With Json.NET, how can I merge two C# objects that need to be serialized together?
说我有一些类经常正常连载的,比如
public class A
{
public A(int x, bool y)
{
X = x;
Y = y;
}
[JsonProperty("x_thing")]
public int X { get; }
[JsonProperty("y_thing")]
public bool Y { get; }
}
public class B
{
public B(string s)
{
S = s;
}
[JsonProperty("string_thing")]
public string S { get; }
}
如果我想从这里开始(但假设 A
和 B
是任意对象):
var obj1 = new A(4, true);
var obj2 = new B("hello world");
...那么我怎样才能惯用地生成这个 JSON 序列化?
{
"x_thing": 4,
"y_thing": true,
"string_thing": "hello world"
}
JObject
有一个 Merge 方法:
var json1 = JObject.FromObject(obj1);
var json2 = JObject.FromObject(obj2);
json1.Merge(json2);
// json1 now contains the desired result
如果您的对象包含具有相同名称的属性,您可以使用带 JsonMergeSettings 对象的重载来指定应如何解决冲突。
说我有一些类经常正常连载的,比如
public class A
{
public A(int x, bool y)
{
X = x;
Y = y;
}
[JsonProperty("x_thing")]
public int X { get; }
[JsonProperty("y_thing")]
public bool Y { get; }
}
public class B
{
public B(string s)
{
S = s;
}
[JsonProperty("string_thing")]
public string S { get; }
}
如果我想从这里开始(但假设 A
和 B
是任意对象):
var obj1 = new A(4, true);
var obj2 = new B("hello world");
...那么我怎样才能惯用地生成这个 JSON 序列化?
{
"x_thing": 4,
"y_thing": true,
"string_thing": "hello world"
}
JObject
有一个 Merge 方法:
var json1 = JObject.FromObject(obj1);
var json2 = JObject.FromObject(obj2);
json1.Merge(json2);
// json1 now contains the desired result
如果您的对象包含具有相同名称的属性,您可以使用带 JsonMergeSettings 对象的重载来指定应如何解决冲突。