当前位置: 首页 > 编程语言 > C#

如何合并两个JObject?Share

时间:2023-04-11 11:17:04 C#

如何合并两个JObjects?我有第一个json:{"data":[{"id":"id1","field":"field1"}],"paging":{"prev":"link1",}}第二个:{"data":[{"id":"id2","field":"field2"}],"paging":{"prev":"link2",}}我想合并/合并两个数据数组,例如:{"data":[{"id":"id1","field":"field1"},{"id":"id2","field":"field2"}]}(我现在不关心分页)。我怎样才能快速轻松地做到这一点?这是我的尝试:varfinal=JsonConvert.SerializeObject(new{data=json1["data"].Union(json2["data"])},Newtonsoft.Json.Formatting.Indented).ToString();但抛出异常:'Newtonsoft.Json.Linq.JArray'不包含'Union'JArraydataOfJson1=json1.SelectToken("data")的定义;JArraydataofJson2=json2.SelectToken("data");foreach(dataofJson2中的JObjectinnerData){dataOfJson1.Add(innerData);}Newtonsoft.Json现在支持合并对象:http://antix.co.uk/Blog/Merging-objects-using-JSON.NETvardataObject1=JObject.Parse(@"{""data"":[{""id"":""id1"",""field"":""field1""}],""paging"":{""prev"":""link1",}}");vardataObject2=JObject.Parse(@"{""data"":[{""id"":""id2"",""field"":""field2""}],""paging"":{""prev"":""link2"",}}");varmergeSettings=newJsonMergeSettings{MergeArrayHandling=MergeArrayHandling.Union};//方法1(dataObject1.SelectToken("data")asJArray).Merge(dataObject2.SelectToken("data"),mergeSettings);//方法2//dataObject1.Merge(dataObject2,mergeSettings);varmergedArray=dataObject1.SelectToken("data")asJArray;Console.WriteLine(mergedArray.ToString(Formatting.None));(用大脑编译器检查;))一个可能的解决方案可能是:s1="{"data":[{"id":"id1","field":"field1"}],"paging":{"prev":"link1",}}";strings2="{"data":[{"id":"id2","field":"field2"}],"paging":{"prev":"link2",}}";vard1=JsonConvert.DeserializeObject(s1);vard2=JsonConvert.DeserializeObject(s2);d1.data.AddRange(d2.data);varresult=JsonConvert.SerializeObject(d1);对于那些不能使用新的JSON.net库的人(比如我)我使用以下方法。publicstaticJObjectmergeJsonObjects(Listobjects){JObjectjson=newJObject();foreach(JObjectJSONObjectinobjects){foreach(varpropertyinJSONObject){stringname=property.Key;JToken值=property.Value;json.Add(property.Key,property.Value);}}返回json;}该方法采用JObject列表并返回单个JObject,简单且有效。以上是C#学习教程:HowcanImergetwoJObject?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: