mar*_*zzz 15 .net c# json json.net
我有一个第一个json:
{
"data": [{
"id": "id1",
"field": "field1"
}],
"paging": {
"prev": "link1",
}
}
Run Code Online (Sandbox Code Playgroud)
第二个:
{
"data": [{
"id": "id2",
"field": "field2"
}],
"paging": {
"prev": "link2",
}
}
Run Code Online (Sandbox Code Playgroud)
我想合并/联合两个数据数组,例如:
{
"data": [{
"id": "id1",
"field": "field1"
},
{
"id": "id2",
"field": "field2"
}]
}
Run Code Online (Sandbox Code Playgroud)
(我现在不在乎paging).
我怎样才能快速轻松地完成?这是我的尝试:
var final = JsonConvert.SerializeObject(new { data = json1["data"].Union(json2["data"]) }, Newtonsoft.Json.Formatting.Indented).ToString();
Run Code Online (Sandbox Code Playgroud)
但是提出了一个例外: 'Newtonsoft.Json.Linq.JArray' does not contains a definition of 'Union'
Dav*_*her 35
Newtonsoft.Json现在支持合并对象:http:
//antix.co.uk/Blog/Merging-objects-using-JSON.NET
var dataObject1 = JObject.Parse(@"{
""data"": [{
""id"": ""id1"",
""field"": ""field1""
}],
""paging"": {
""prev"": ""link1"",
}
}");
var dataObject2 = JObject.Parse(@"{
""data"": [{
""id"": ""id2"",
""field"": ""field2""
}],
""paging"": {
""prev"": ""link2"",
}
}");
var mergeSettings = new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Union
};
// method 1
(dataObject1.SelectToken("data") as JArray).Merge(dataObject2.SelectToken("data"), mergeSettings);
// method 2
//dataObject1.Merge(dataObject2, mergeSettings);
var mergedArray = dataObject1.SelectToken("data") as JArray;
Console.WriteLine(mergedArray.ToString(Formatting.None));
Run Code Online (Sandbox Code Playgroud)
(用脑编译器检查;))
JArray dataOfJson1=json1.SelectToken("data");
JArray dataofJson2=json2.SelectToken("data");
foreach(JObject innerData in dataofJson2)
{
dataOfJson1.Add(innerData);
}
Run Code Online (Sandbox Code Playgroud)
对于那些(像我一样)无法使用新的 JSON.net 库的人。下面的方法是我使用的。
public static JObject mergeJsonObjects(List<JObject> objects) {
JObject json = new JObject();
foreach(JObject JSONObject in objects) {
foreach(var property in JSONObject) {
json.Add(property.Key, property.Value);
}
}
return json;
}
Run Code Online (Sandbox Code Playgroud)
该方法获取 JObject 列表并返回单个 JObject,简单且有效。
| 归档时间: |
|
| 查看次数: |
33426 次 |
| 最近记录: |