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

使用 apache nifi 执行 json 密钥转换

阎咏思
2023-03-14

我需要在apache nifi中进行json转换。有效负载中的json键将动态生成。例如,在下面给出的输入中,“客户”具有属性“fname”和“lname”。我需要更改这个“fname”-

因为我是nifi的新手。我不知道从哪里开始。我试过一些json变形金刚比如jolt。但是没有达到预期的效果。

我使用的颠簸变换如下:

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

产生了输出

{
  "fname" : "akhil",
  "lname" : "kumar"
}

我需要实现的输入和预期输出如下所示:


{
  "customer": {
    "fname": "akhil",
    "lname": "kumar",
    .
    .
    .
  },
  "mappingvalues": {
    "fname": "firstname",
    "lname": "lastname",
    .
    .
    .
  }
}

##OUTPUT
{
  "customer": {
    "firstname": "akhil",
    "lastname": "kumar",
    .
    .
    .
  }
}

*有没有任何方法可以在使用或不使用jolt变换的情况下在nifi中实现相同的效果?使用groovy脚本也可以这样做吗?*请帮我同样的忙。

共有1个答案

东明德
2023-03-14

Groovy中带有递归映射的代码:

import groovy.json.JsonSlurper

def ff = session.get()
if(!ff)return

def json = ff.read().withReader("UTF-8"){r-> new JsonSlurper().parse(r) } 

def mappings = json.remove('mappingvalues')
def mapper(o, mappings){
    if(o instanceof Map){
        //json object. let's iterate it and do mapping
        o = o.collectEntries{k,v-> [ (mappings[k] ?: k), mapper(v,mappings) ] }
    }else if(o instanceof List){
        //map elements in array
        o = o.collect{v-> mapper(v,mappings) }
    }
    return o
}
json = mapper(json,mappings)

ff.write("UTF-8"){w-> new JsonBuilder(json).writeTo(w) }
REL_SUCCESS << ff
 类似资料:
  • 使用AKV管理存储帐户:https://docs.microsoft.com/en-us/Azure/key-vault/key-vault-overview-storage-keys-powershell#manage-storage-account-keys 使用Azure Automation进行密钥循环:https://docs.microsoft.com/en-us/Azure/key-

  • 我想用AES加密实现一个自定义密钥,我找到了下面的实现和细节。 但我有以下几点疑虑: 如果我要使用典型的示例代码,例如: null https://www.securecoding.cert.org/confluence/display/java/msc61-j.+do+not+use+insecure+or+weak+cryptographic+算法 如何在Java中生成SALT值?

  • 我有下面的文件,它是json转储的结果。 我想这个文件是乱七八糟的。它的格式不对。我研究了如何在json中转储 openstack资源列表-f json的输出格式如下 现在我的问题 json转储文件在我看来并不像json。如何使其格式正确 如果有人能解释我的json文件,这将是有帮助的。或者如果没有请指导我到可以帮助我理解嵌套字典的链接 编辑:获取我在下面做的值,并给我 值错误:解压缩的值太多

  • 问题内容: 从值中获取单个密钥 我想从以下JSON进行向后选择。我想提取特定状态的缩写。在这种情况下,缩写是关键,而我要开头的值就是值。 当然,我可以遍历每个值,将值与我的值进行比较,并在匹配时选择键。这是处理类似问题的最佳方法吗?或者,还有更好的方法? 反转JSON数据 另一种选择是在处理的早期反转此数据,以给我自己交换密钥/值的一组相似值。我会对看到有效地执行此操作的方法感兴趣。 问题答案:

  • 问题内容: 我正在编写一个用于传输文件的小型应用程序,或多或少地将其作为一种学习更多编程加密基础的方法。这个想法是生成一个RSA密钥对,交换公共密钥,并发送AES iv和密钥以进一步解密。我想用接收者的RSA公钥加密AES密钥,如下所示: 然后,我将密钥值写给接收器,并按如下方式解密: 在控制台的另一端,我将其作为输出: 此外,如果我创建一个大小为16的字节数组,并将cipher.doFinal(

  • 我正在尝试将我的应用程序从128位AES密钥升级为256位AES。然而,当我将第54行从128更改为256时,我会得到以下密钥大小错误。 java.security.无效密钥异常: 非法的密钥大小 我已正确安装了JCE文件,我的应用程序生成较长的密钥这一事实证明了这一点。 我在其他文章中看到过“AES / CBC / PKCS7Padding”加密方法,但这只会让我遇到这个例外: