千家信息网

jolt json中json mapping是什么

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,jolt json中json mapping是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。demo 解读有了第一篇的基础,操作
千家信息网最后更新 2025年02月05日jolt json中json mapping是什么

jolt json中json mapping是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

demo 解读

有了第一篇的基础,操作jolt已经不成问题,对于大部分json的mapping已经得心应手了,本片主要聚焦jolt除了json的mapping功能以外的其他功能。

模式的含义

  • modify-default-beta 修改-默认 当左手边不存在或是为空的时候进行转换。

  • modify-overwrite-beta 修改-覆盖 保留老数据,如果值相同会更新

数组(Array)相关 - List Functions

json input

{  "scores": [    4,    2,    8,    7,    5  ]}

json spec

[  {    "operation": "modify-overwrite-beta",    "spec": {      // 计算数组长度      "numScores": "=size(@(1,scores))",      // 数组取头取尾      "firstScore": "=firstElement(@(1,scores))",      "lastScore": "=lastElement(@(1,scores))",      // 出不来值      "scoreAtMidPoint": "=elementAt(@(1,scores),2)",      // 数组排序      "sortedScores": "=sort(@(1,scores))"    }  }]

json output

{  "scores" : [ 4, 2, 8, 7, 5 ],  "numScores" : 5,  "firstScore" : 4,  "lastScore" : 5,  "sortedScores" : [ 2, 4, 5, 7, 8 ]}

数学(Math)相关 - Math Functions

json input

{  "intData" : [ 2, 7, 5 ],  "doubleData" : [ 0.25, 1.5, 1 ],  "a" : 10,  "b" : 5,  "c" : 3,  "negative" : "-1.0"}

json spec

[  {    "operation": "modify-overwrite-beta",    "spec": {      // 数组 求和      "sumIntData": "=intSum(@(1,intData))",      "sumLongData": "=intSum(@(1,intData))", // 和intSum一样,不同的是返回Java Long      "sumDoubleData": "=doubleSum(@(1,doubleData))",      // 数组 求平均      "avgIntData": "=avg(@(1,intData))", // 返回double类型      "avgDoubleData": "=avg(@(1,doubleData))",      // 数组 排序      "sortedIntScores": "=sort(@(1,intData))",      // 获取 最小值      "minAB": "=min(@(1,a),@(1,b))",       // 获取 最大值      "maxAB": "=max(@(1,a),@(1,b))",       // 获取 绝对值      "abs": "=abs(@(1,negative))",      // 除法      "aDivB": "=divide(@(1,a),@(1,b))",      "aDivC": "=divide(@(1,a),@(1,c))",       //      // 除法 四舍五入      "aDivCRounded4": "=divideAndRound(4,@(1,a),@(1,c))"    }  }]

json output

{  "intData" : [ 2, 7, 5 ],  "doubleData" : [ 0.25, 1.5, 1 ],  "a" : 10,  "b" : 5,  "c" : 3,  "negative" : "-1.0",  "sumIntData" : 14,  "sumLongData" : 14,  "sumDoubleData" : 2.75,  "avgIntData" : 4.666666666666667,  "avgDoubleData" : 0.9166666666666666,  "sortedIntScores" : [ 2, 5, 7 ],  "minAB" : 5,  "maxAB" : 10,  "abs" : 1.0,  "aDivB" : 2.0,  "aDivC" : 3.3333333333333335,  "aDivCRounded4" : 3.3333}

类型转换 - Type Conversion

json input

{  "happy": "true",  "meh": "meh",  "answer": 42,  "statistics" : [    {      "id" : "A",      "min" : "2.0",      "max" : "10.0",      "avg" : "7.9"    },    {      "min" : "6",      "max" : "6",      "avg" : "6"    },    {      "id" : "C"    }  ]}

json spec

[  {    "operation": "modify-overwrite-beta",    "spec": {      // 字符串 转 布尔      "happy": "=toBoolean",      // 如果原来不是布尔,转boolean可以设置false      "meh": ["=toBoolean", false],      //      // 数字 转 字符串      "answer": "=toString",      // 下面做一些类型转换练习,缺省数据给默认值      "statistics": {        "*": {          // 转成 整型 缺省设置0          "min": ["=toInteger", 0],          // 转成 整型 缺省设置null          "max": ["=toInteger", null],          // 转成 浮点型 缺省设置null          "avg": ["=toDouble", null],          // id列缺省时 设置 UNKNOWN          "_id": "UNKNOWN"        }      }    }  }]

json output

{  "happy" : true,  "meh" : false,  "answer" : "42",  "statistics" : [ {    "id" : "A",    "min" : 2,    "max" : 10,    "avg" : 7.9  }, {    "min" : 6,    "max" : 6,    "avg" : 6.0,    "id" : "UNKNOWN"  }, {    "id" : "C",    "min" : 0,    "max" : null,    "avg" : null  } ]}

字符串连接 - String Concatenation

json input

{  "x": [ 3, 2, 1, "go"  ],  "small": "small",  "BIG": "BIG",  "people": [    {      "firstName": "Bob",      "lastName": "Smith",      "address": {        "state": null      }    },    {      "firstName": "Sterling",      "lastName": "Archer"    }  ]}

json spec

[  {  //modify-default-beta模式的含义是,当左手边不存在或是为空的时候进行转换。    "operation": "modify-default-beta",    "spec": {      // @(1,x)将x数组中各个元素解析出来,再组合      // y通过join将x数组中元素通过 逗号 组合      // z通过join将x数组中元素通过 空格 组合      "y": "=join(',',@(1,x))",      "z": "=join(' ',@(1,x))",      //      // 英文字符全部大写或小写转换      "small_toUpper": "=toUpper(@(1,small))",      "BIG_toLower": "=toLower(@(1,BIG))",      "people": {        "*": {          //  1表示,钻取第二层数据          "fullName": "=concat(@(1,firstName),' ',@(1,lastName))",          // 后缀问好的意思是,实际有address这个字段时才会解析          "address?": {            "state": "Texas"          }        }      }    }  }]

json output

{  "x" : [ 3, 2, 1, "go" ],  "small" : "small",  "BIG" : "BIG",  "people" : [ {    "firstName" : "Bob",    "lastName" : "Smith",    "address" : {      "state" : "Texas"    },    "fullName" : "Bob Smith"  }, {    "firstName" : "Sterling",    "lastName" : "Archer",    "fullName" : "Sterling Archer"  } ],  "y" : "3,2,1,go",  "z" : "3 2 1 go",  "small_toUpper" : "SMALL",  "BIG_toLower" : "big"}

关于jolt json中json mapping是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0