首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JOLT将数组元素和字符串转换为数组中的后续独立对象?

如何使用JOLT将数组元素和字符串转换为数组中的后续独立对象?
EN

Stack Overflow用户
提问于 2021-04-07 20:13:41
回答 1查看 64关注 0票数 0

我正在尝试使用JOLT转换记录。字符串元素- from access_level字段和数组元素(from tag字段)必须转换为properties数组中的单独对象。而是将两个元素合并为一个:

以下是输入:

代码语言:javascript
运行
复制
{
  "access_level": "public",
  "tags": [
    {
      "id": 174,
      "tag_name": "machine-learning",
      "tag_path": "machine-learning"
    },
    {
      "id": 393,
      "tag_name": "chinese",
      "tag_path": "chinese"
    }
  ]
}

和spec文件:

代码语言:javascript
运行
复制
[
  {
    "operation": "shift",
    "spec": {
      "access_level": {
        "*": {
          "@1": "properties[#1].value",
          "#terms-of-use": "properties[#1].type.code"
        }
      },
      "tags": {
        "*": {
          "tag_name": "properties[#2].value",
          "#keyword": "properties[#2].type.code"
        }
      }
    }
  }
]

预期输出为:

代码语言:javascript
运行
复制
{
"properties" : [ 
    {
      "value" :  "public",
      "type" : {
        "code" : "terms-of-use"
      }
    }, 
    {
      "type" : {
        "code" : "keyword"
      },
      "value" : "machine-learning"
    },
    {
      "type" : {
        "code" : "keyword"
      },
      "value" : "chinese"
    } ]
  }

access_level和来自tags的first value正在合并:

代码语言:javascript
运行
复制
{
  "properties" : [ {
    "value" : [ "public", "machine-learning" ],
    "type" : {
      "code" : "keyword"
    }
  }, {
    "type" : {
      "code" : [ "terms-of-use", "keyword" ]
    },
    "value" : "chinese"
  } ]
}

如果输入上没有access_level,则输出看起来很好-2在properties数组中创建对象

EN

回答 1

Stack Overflow用户

发布于 2021-04-08 16:49:03

您可以使用与号符号应用连续的shift转换来确定键,同时在第一步中生成一个数组(p)(从tags派生)和一个元素(从access_level派生);然后将该数组重命名为properties,同时在最后一步将该元素添加到其中,方法如下:

代码语言:javascript
运行
复制
[
  {
    "operation": "shift",
    "spec": {
      "tags": {
        "*": {
          "tag_name": "p.[&1].value",
          "#keyword": "p.[&1].type.code"
        }
      },
      "access_level": {
        "*": {
          "@(3,access_level)": "&1.value",
          "#terms-of-use": "&1.type.code"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "properties"
    }
  }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66985840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档