第六講教程只簡單介紹了Jolt的chain轉換模式,本節課介紹下Jolt的各種轉換模式。
點選的處理器JoltTransformJSON高階配置選項,進行測試Jolt的轉換模式。
1、Cardinality:更改了輸入JSON資料元素的基數,適用於jsonObj和jsonList 之間的轉換。
list轉為obj
input
{ "review": { "nameArry": ["Javax 小金剛", "Javax 大金剛"] }, "data": { "nameList": [{ "id": "1", "name": "Javax 小金剛" }, { "id": "2", "name": "Javax 大金剛" }] }, "isMap": { "singleName": "Javax 小金剛" }, "myName": "Javax 小金剛", "emptyListContainer": { "emptyList": [] }, "nullData": null }
Jolt Specification
{ "review" : { "nameArry" : "ONE" }, "data" : { "nameList" : "ONE" }, "isMap" : "ONE", "myName" : "ONE", "emptyListContainer" : { "emptyList" : "ONE" }, "nullData" : "ONE" }
output
{ "review": { "nameArry": "Javax 小金剛" }, "data": { "nameList": { "id": "1", "name": "Javax 小金剛" } }, "isMap": { "singleName": "Javax 小金剛" }, "myName": "Javax 小金剛", "emptyListContainer": { "emptyList": null }, "nullData": null }
obj轉為list
input
{ "myName" : "Javax 小金剛" }
Jolt Specification
{ "myName" : "MANY" }
output
{ "myName": ["Javax 小金剛"] }
2、Default:如果輸入中不存在指定的欄位,則新增預設值。
input
{ "myName" : "Javax 小金剛" }
Jolt Specification
{ "age" : 18 }
output
{ "myName": "Javax 小金剛", "age": 18 }
3、Modify -Default:修改欄位的值,如果欄位不存在則新增預設值,如果欄位存在不做處理。
input
{ "myName" : "Javax 小金剛", "playGames":"太空戰士" }
Jolt Specification
{ "playGames":"過家家" }
output
{ "myName": "Javax 小金剛", "playGames": "太空戰士" }
4、Modify - Define:修改欄位的值,如果欄位不存在則建立該欄位並賦值,測試結果同Modify - Define。
5、Modify - Overwrite:修改欄位的值,如果欄位不存在則忽略,存在的話強制覆蓋。
input
{ "myName" : "Javax 小金剛", "playGames":"太空戰士" }
Jolt Specification
{ "playGames":"過家家" }
output
{ "myName": "Javax 小金剛", "playGames": "過家家" }
6、Remove:移除指定的欄位。
input
{ "myName" : "Javax 小金剛", "playGames":"太空戰士" }
Jolt Specification
{ "playGames":"" }
output
{ "myName": "Javax 小金剛" }
7、Shift:將欄位的值移動到另一個欄位下。
input
{ "name" : "Javax 小金剛", "id":"1" }
Jolt Specification
{ "name":"person.name", "id":"person.id" }
output
{ "person": { "name": "Javax 小金剛", "id": "1" } }
8、Sort:對物件中的欄位進行排序(按字母順序)。
input
{ "d":"test1", "c":"test2", "b":"test3", "a":"test4" }
Jolt Specification
無
output
{ "a": "test4", "b": "test3", "c": "test2", "d": "test1" }
9、Custom:自定義轉換規則,需要自定義轉換外掛,後續講解,本次略。
10、Chain:按順序應用多個轉換規則,將上面提到的規則合併到一起順序執行多個轉換規則。
input
{ "id":"1", "name":"Java小金剛" }
Jolt Specification
[ { "operation": "shift", "spec": { "id":"person.id", "name":"person.name" } }, { "operation": "default", "spec": { "ext":"備註" } } ]
output
{ "person": { "id": "1", "name": "Java小金剛" }, "ext": "備註" }
注:這裡僅僅介紹了常用的示例,實際工作用更多的是用到chain這個。還有很多高階的用法,大家可以自行探索下。
傳送門:https://github.com/bazaarvoice/jolt/tree/master/jolt-core/src/test/resources/json