重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
jolt json中json mapping是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联是一家专注于成都网站设计、网站制作、外贸营销网站建设和四川乐山服务器托管的网络公司,有着丰富的建站经验和案例。
有了第一篇的基础,操作jolt已经不成问题,对于大部分json的mapping已经得心应手了,本片主要聚焦jolt除了json的mapping功能以外的其他功能。
modify-default-beta 修改-默认 当左手边不存在或是为空的时候进行转换。
modify-overwrite-beta 修改-覆盖 保留老数据,如果值相同会更新
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 ] }
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 }
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 } ] }
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是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。