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是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/sunnywu/blog/3095163