当前位置: 首页 > 面试题库 >

将两个JToken合并为一个

颛孙品
2023-03-14
问题内容

如何将这两个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。我有一个循环,可以带回具有三个字段的多个页面。最终目标是抓取每个页面并创建一个Token包含所有页面的大J。

像这样的东西:

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

问题答案:

您可以JContainer.Merge(Object, JsonMergeSettings)用来将一个合并JObject到另一个。请注意,可以JsonMergeSettings.MergeArrayHandling控制数组的合并方式。从MergeArrayHandlingEnumeration文档中,可能的合并选项是:

 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.MergeNullValueHandlingnull根据需要控制是合并还是忽略值。



 类似资料:
  • 问题内容: 结合这两个查询的正确语法是什么? 和 我试过了: 但我收到“ UNION和ORDER BY的用法不正确”。 编辑 此外,我希望结果在一行中返回。这样我就可以访问php中的值,例如 根据西蒙的建议,我不应该使用UNION,因为我想返回一行数据 问题答案: 您不能先进入,然后再进入。 编辑 但是你可以 将ORDER BY或LIMIT应用于单个SELECT,将子句放在包围SELECT的括号内

  • 问题内容: 如何合并这两个SQL语句? 两个表中都存在hits10,hits11和hits12。 问题答案: 使用UNION查询-只需在两个查询之间填入“ UNION”即可: 更新 将联合包装在另一个查询中:

  • 本文向大家介绍MySQL查询将两列合并为一个列?,包括了MySQL查询将两列合并为一个列?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用功能。在该函数中,它从列中返回第一个NON NULL值。为了理解这个概念,让我们首先创建一个演示表 使用insert命令在表中插入一些记录。查询如下- 现在,您可以使用select语句显示表中的所有记录。查询如下- 以下是输出 这是将两列合并为一个查询的

  • 问题内容: 如何使用Java合并两个WAV文件? 我试过了,但是没有正常工作,他们还有其他方法吗? 问题答案: 如果直接使用wav文件的字节,则可以在任何编程语言中使用相同的策略。对于此示例,我将假设两个源文件具有相同的比特率/数字通道,并且具有相同的长度/大小。(否则,您可能可以在开始合并之前对其进行编辑)。 首先看一下WAV规范,我在斯坦福课程网站上找到了一个很好的人: 常见的标头长度为44或

  • 问题内容: 我有第1列和第2列,并希望将它们合并到同一表的第3列中。如果第2列为空,则显示第1列的值;如果第1列为空,则它们显示第2列的数据。如果它们都为空,则显示为空。我尝试了两件事: 1)使用CONCAT 。 仅当两个列都不为null时,它才合并列。否则,它只是将null声明为null。 2)使用(第1栏+第2栏)。 。 没有显示所需的输出。 我正在用Java编写此代码。谢谢 问题答案: us

  • 问题内容: 我有2个静态的Linux库,通过创建,和。 我想将它们合并到一个静态库中。 我怎样才能做到这一点。 我想创建一个合并的静态库,而不是将这两个库都提供给应用程序的最终链接。 问题答案: 您可以从两个文件中提取对象,然后使用提取的s 创建文件: