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

用于三元操作的JOLT规范

裴弘
2023-03-14

我正在尝试编写一个震动规范,用于在下面提到的预期输出中转换以下输入

输入:

<代码>{"城市":"西雅图","州":"西澳","国家":"美国","日期":"10/20/2018","用户列表": [ { "名":"大卫","年龄":"22","性别":"M","公司":"好" }, { "名":"汤姆","年龄":"30","性别":"M","公司":"好" }, { "名":"安妮","年龄":"25","性别":"F","公司":"坏" }, { "名":"亚伦","年龄":"27","性别":"M","公司":"坏" } ] }

预期输出:

{“用户”:[{“日期”:“10/20/2018”,“用户名”:“David”,“年龄”:“22”,“性别”:“M”,“组织”:“良好”},{“时间”:“2018年10月20日”,“姓名”:“汤姆”,“30”,“性”:“M”,“机构”:“好”}],“日期”“10/20/2008”,“州”:“华盛顿州”,“国家”:“美国”}

我想过滤掉列表中company=bad或sex=F的所有元素,或者只保留company=good和sex=M的元素。我需要帮助根据特定条件从列表中删除元素。对于这种数据驱动的转换,建议使用jolt吗?

到目前为止,我编写的规范是<code>〔{“operation”:“shift”,“Spec”:{“userList”:{“*”:{“name”:“users”[

共有1个答案

阎晗日
2023-03-14

好了,下面是我为“把所有的东西都拿走”想出一个解决方案的过程

    < li >按原样复制顶级元素,不影响范围 < li >对于用户内容,请转到用于过滤“用户-
[{
    "operation": "shift",
    "spec": {
      "userList": {
        "*": {
          "name": "users.[&1].username",
          "age": "users.[&1].age",
          "sex": "users.[&1].sex",
          "company": "users.[&1].organization",
          "@(2,date)": "users.[&1].date"
        }
      },
      "date": "Date",
      "state": "State",
      "country": "Country"
    }
    }
  ,
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "users": {
        "*": {
          "sex": {
            "M": {
              "@(2,username)": "users.&3.username",
              "@(2,age)": "users.&3.age",
              "@(2,sex)": "users.&3.sex",
              "@(2,organization)": "users.&3.organization",
              "@(2,date)": "users.&3.date"
            }
          }
        }
      }
    }
   }
  ,
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "users": {
        "*": {
          "organization": {
            "good": {
              "@(2,username)": "users.&3.username",
              "@(2,age)": "users.&3.age",
              "@(2,sex)": "users.&3.sex",
              "@(2,organization)": "users.&3.organization",
              "@(2,date)": "users.&3.date"
            }
          }
        }
      }
    }
     },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "users": {
        "*": "users[]"
      }
    }
 }
]

对于另一种情况,您只需更改过滤规则,以便在规则匹配时不执行任何操作,并在其他情况下复制字段 (*)。其中给出了以下规范(仅在第一个字段上进行了,更新第二个字段应该不是问题)

[{
    "operation": "shift",
    "spec": {
      "userList": {
        "*": {
          "name": "users.[&1].username",
          "age": "users.[&1].age",
          "sex": "users.[&1].sex",
          "company": "users.[&1].organization",
          "@(2,date)": "users.[&1].date"
        }
      },
      "date": "Date",
      "state": "State",
      "country": "Country"
    }
    }
  ,
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "users": {
        "*": {
          "sex": {
            "F": null,
            "*": {
              "@(2,username)": "users.&3.username",
              "@(2,age)": "users.&3.age",
              "@(2,sex)": "users.&3.sex",
              "@(2,organization)": "users.&3.organization",
              "@(2,date)": "users.&3.date"
            }
          }
        }
      }
    }
   },

  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "users": {
        "*": "users[]"
      }
    }
 }
]

 类似资料:
  • 我正在尝试用以下规格进行JOLT换班操作,这是不起作用的。不知道我犯了什么错误。在这种情况下需要帮助。输出JSON作为一个对象来代替Array,shift也不能按预期工作。

  • 我对震动是新手。我有两个不同的相同结构的输入json集,除了一个对象内部不同的基于decider值,如下所示。

  • 我正在尝试为下面的输入编写一个jolt转换:input 预期输出。 请帮助我在spec.json中实现预期的output . JSON。spec没有转换为预期的输出。我想学习如何在字符串解析器中使用属性

  • 需要颠簸规格。另外,请建议任何好的教程都可用于相同。需要以下信息。1.在列表中添加默认值 2.根据其他字段的条件设置字段值 3.字符串附加功能可以在JOLT中工作吗?4.将对象转换为数组 你能建议同样的JOLT规范吗?

  • 描述我正在处理一个需要JSON到JSON转换的问题,所以我使用Jolt库来解决这个问题。我的输入JSON文档中有一些节点,它们有时可以作为对象数组出现,有时可以作为普通对象出现。我无法定义适用于对象数组和单个对象的Jolt规范。 要求如果节点包含对象数组,则从数组中获取第0个元素并将其映射到输出JSON。 颠簸规格 输入JSON(JSON规范适用于此输入) 输出JSON(获取预期输出) 但是,当患

  • 我很难为不同的JSON输入编写一个jolt规范。我需要得到一个通用的jolt规范,以便得到一个扁平的json 输入1: 输入2: 需要JSON输出- 单个平展 JSON : 我尝试的Jolt规范适用于输入2,但不适用于输入1: 请帮助我很难为不同的 JSON 输入编写颠簸规范。我需要获得一个通用的颠簸规范,以便我得到一个扁平化的 json