您好,登錄后才能下訂單哦!
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是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。