什么样的 JSON JOLT Spec 来获取键值输出,其中键是数据值,值是数组

Posted

技术标签:

【中文标题】什么样的 JSON JOLT Spec 来获取键值输出,其中键是数据值,值是数组【英文标题】:What kind of JSON JOLT Spec to get key-value output where key is a data value and value is an array 【发布时间】:2022-01-17 22:24:47 【问题描述】:

我正在尝试找到一个能产生所需输出的规范数组

输入:


  "aggregations": 
    "masterId": 
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        
          "key": "1Q52",
          "doc_count": 3,
          "serialNumbers": 
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              
                "key": "3R24Z3",
                "count": 1
              ,
              
                "key": "526GA2",
                "count": 1
              ,
              
                "key": "873XHE",
                "count": 1
              
            ]
          
        
      ]
    
  

规格: 试图解决这个问题

期望的输出:


  "1Q52": ["3R24Z3", "526GA2", "873XHE"]

我当前的 Spec 数组是

[
  
    "operation": "shift",
    "spec": 
      "aggregations": 
        "masterId": 
          "buckets": 
            "*": 
              "key": "key",
              "serialNumbers": 
                "buckets": 
                  "*": 
                    "key": "key"
                  
                
              
            
          
        
      
    
  
]

我目前的输出是


  "key" : [ "1Q52", "3R24Z3", "526GA2", "873XHE" ]

什么样的规格数组可以给我想要的输出?

【问题讨论】:

【参考方案1】:

您可以通过使用"key": "@(4,key)" 等方式提升4级并获取作为数组键的值

[
  
    "operation": "shift",
    "spec": 
      "aggregations": 
        "masterId": 
          "buckets": 
            "*": 
              "serialNumbers": 
                "buckets": 
                  "*": 
                    "key": "@(4,key)"
                  
                
              
            
          
        
      
    
  
]

其中 : 和三倍 字符遍历被计数以达到所需的键值。

【讨论】:

嗨@AmrutKulkarni。您可以查看my former answers、Jolt's releases 和baazarvoice/jolt。祝你工作愉快。 成功了!谢谢 介意解释这背后的机制吗?我对 JOLT 很陌生。我很难找到关于如何学习它的好资源,但它在我的工作中经常使用。是否有任何好的资源来解释 JOLT,尤其是如何使用 #、$ 和 @ 以及如何从 JSON 文档的部分中获取数据,就像您的规范数组所做的那样 谢谢!我会检查一下我希望能更好地理解 Jolt,因为它经常用于格式化从我们的数据库中提取的数据,以便我们的中间件可以使用它

以上是关于什么样的 JSON JOLT Spec 来获取键值输出,其中键是数据值,值是数组的主要内容,如果未能解决你的问题,请参考以下文章

Jolt 将多个对象转换为具有新字段名称的数组

使用jolt变换并将平面json转换为复杂的嵌套json数组

使用 Jolt 从 JSON 输出中删除空值

java 说明如何使用Jolt实现JSON转换。在此示例中,JSON文件是内存中的字符串。

使用 Jquery SerializeArray() 获取 JSON 键值对

[可能不知道]什么是PeopleSoft的JOLT以及相关进程