gpt4 book ai didi

c# - 将两个 JToken 合并为一个

转载 作者:太空狗 更新时间:2023-10-29 21:21:34 24 4
gpt4 key购买 nike

如何将这两个 JToken 合并为一个 JToken。这听起来应该很简单,但我无法绕过它。

{
"data":[
{
"ID":"53a1862000404a304942546b35519ba3",
"name":"Private Approval Process: Draft Document CPL",
"objCode":"ARVPTH"
}]
}

{
"data":[
{
"ID":"53a1838200401324eb1ec66562e9d77d",
"name":"Private Approval Process: Draft Document CPL",
"objCode":"ARVPTH"
}]
}

感谢您的帮助!

这是我目前尝试过的:

我首先将第一个对象分配给变量 Jtoken pageOne,然后尝试将其连接到第二个变量 JToken allPages。我有一个循环,可以返回多个页面,每个页面包含三个字段。最终目标是抓取每个页面并创建一个包含所有页面的大 JToken

像这样:

for (int page = 0; page <= recCount; page += 2000)
{
//Get data
pageOne = getJsonData();
allPages.Concat(pageOne);
}
return allPages;

最佳答案

您可以使用 JContainer.Merge(Object, JsonMergeSettings)将一个 JObject 合并到另一个。注意 JsonMergeSettings.MergeArrayHandling控制数组的合并方式。来自MergeArrayHandling Enumeration documentation ,可能的合并选项是:

Concat   0   Concatenate arrays.
Union 1 Union arrays, skipping items that already exist.
Replace 2 Replace all array items.
Merge 3 Merge array items together, matched by index.

因此使用 MergeArrayHandling.Concat 合并如下,其中 allPagespageOne 都是 JContainer 类型(或子类,例如 JObject):

JContainer allPages = null;
var settings = new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Concat };
for (int page = 0; page <= recCount; page += 2000)
{
//Get data
var pageOne = (JContainer)getJsonData(page);
if (allPages == null)
allPages = pageOne;
else
allPages.Merge(pageOne, settings);
}
return allPages;

给出:

{
"data": [
{
"ID": "53a1862000404a304942546b35519ba3",
"name": "Private Approval Process: Draft Document CPL",
"objCode": "ARVPTH"
},
{
"ID": "53a1838200401324eb1ec66562e9d77d",
"name": "Private Approval Process: Draft Document CPL",
"objCode": "ARVPTH"
}
]
}

在使用 Replace 合并时给出:

{
"data": [
{
"ID": "53a1838200401324eb1ec66562e9d77d",
"name": "Private Approval Process: Draft Document CPL",
"objCode": "ARVPTH"
}
]
}

如果您的变量是 JToken 类型,您需要将它们转换为 JContainer。 (不能合并不是容器的 JSON 基元。)

JsonMergeSettings.MergeNullValueHandling根据需要控制是合并还是忽略 null 值。

关于c# - 将两个 JToken 合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37756656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com