当前位置: 首页 > 知识库问答 >
问题:

用颠簸变换时计数器

尉迟越
2023-03-14

我正在将两个对象数组转换为一个对象数组。在这样做的时候,根据项目的类型,我需要为每个项目分配一个id。并且,在将这些项放入单个数组之后,ID应该是串行的,按照它们最初出现在输入JSON中的顺序。它不是所有项目的单个itemId。它基于自己的类型。PFB输入和输出JSON示例。使用jolt-core[0.1.0]。请帮忙。

{
    "Beverages" : {
        "Items" : [ {
            "name" : "cofee",
            "type" : "hot"
        },{
            "name" : "wine",
            "type" : "cold"
        },{
            "name" : "tea",
            "type" : "hot"
        },{
            "name" : "beer",
            "type" : "cold"
        }
        ]   
    },
    "Snacks" : {
        "Items" : [ {
            "name" : "crackers",
            "type" : "hot"
        },{
            "name" : "salad",
            "type" : "cold"
        },{
            "name" : "muffin",
            "type" : "cold"
        },{
            "name" : "toast",
            "type" : "hot"
        }
        ]
    }
}
{
    "items" : [{
            "name" : "cofee",
            "type" : "hot",
            "hotId" : 1
        },{
            "name" : "wine",
            "type" : "cold",
            "coldId" : 1
        },{
            "name" : "tea",
            "type" : "hot",
            "hotId" : 2
        },{
            "name" : "beer",
            "type" : "cold",
            "coldId" : 2
        },{
            "name" : "crackers",
            "type" : "hot",
            "hotId" : 3
        },{
            "name" : "salad",
            "type" : "cold",
            "coldId" : 3
        },{
            "name" : "muffin",
            "type" : "cold",
            "coldId" : 4
        },{
            "name" : "toast",
            "type" : "hot",
            "hotId" : 4
        }
    
    ]
}

如上所述,hotId和coldId是输出中的新字段。但是,它会增加。

共有1个答案

古彦
2023-03-14

这个(冗长的)规范应该产生输出

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Items": {
          "*": {
            "name": "@(1,type)"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "&1[&0].name"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": "&2[&1].&",
          "$1": "&2[&1].type"
        }
      }
    }
  },
  {
    "operation": "modify-default-beta",
    "spec": {
      "*": {
        "*": {
          "idName": "=concat(@(1,type), 'Id')"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@": "&",
        "*": {
          "idName": {
            "$1": "&3[&2].idValue"
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "*": {
          "idValue": "=intSum(@(1,idValue), 1)"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "idValue": "&2[&1].@(1,idName)"
        },
        "@": "&"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "name|type|coldId|hotId": "&2[&1].&"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "items[]"
      }
    }
  }
]

尝试一个接一个地检查转换的输出。注意:元素的顺序与所需的输出不同。如果我找到更多的时间,我会试着对它进行排序,(也许)让它更简洁。

 类似资料:
  • 我正在尝试为下面的输入编写一个震动转换 - 预期产量为- 我的规格是- 规范没有按照预期的输出进行转换。我想学习如何在字符串解析器中使用属性。

  • 我需要Jolt转换的帮助。我有数组,由许多json对象组成。(https://jolt-demo.appspot.com/) Jolt需要进行哪些转换才能获得以下结果? 现在我有了下一个Jolt构造: 但以下结果不正确:

  • 我有这个JSON作为输入: 我需要得到这样的输出: 我需要使用哪种规格? 多谢!

  • 我正在尝试转换以下JSON 用JOLT转换成更简单的东西: 我尝试了很多颠簸的代码,但我不知道如何完成最后一部分。我写了一些颠簸的转变: 但是我不知道如何做最后一部分来旋转name列。name列的值应该基于NAV值旋转。

  • 我正在尝试转换一个包含数组的JSON对象,并将数据卸载为单独的JSON。基本上,我需要为数组的每个元素创建一个对象,并复制所有外部数据。示例: 输入 预期产出 我尝试的规格: 我对 Jolt 很陌生,并尝试了几个不起作用的规格。我在取消嵌套部分时遇到问题。谢谢你的帮助。

  • 我正在尝试为以下输入创建震动转换: 所需输出为: 我刚刚开始理解jolt转换的基础,但是对于嵌套结构来说,这似乎有点复杂。