簡體   English   中英

顛簸變換后更改output名稱

[英]Change output name after jolt transformation

我是 jolt 世界的新手,我想知道是否有好方法可以在轉換后修改 output 字段的名稱

輸入樣本:

 {
      "userId": "1",
      "age": "20",
      "firstName": "firstname1",
      "lastname": "lastname1",
      "zipCode": "zipcode1",
      "street": "street1",
      "city": "city1",
      "country": "country",
      "gender": "gender1",
      "grade": "grade1",
      "birthday": "birthday1"
    }

Spec sample ==> 感謝@Barbaros 的幫助

[
  {
    "operation": "shift",
    "spec": {
      "userId": "ID",
      "*": "&",
      "street|city|zipCode|country": {
        "$": "adr_&.code",
        "@": "adr_&.value"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "adr_*": "address[]"
    }
  }
]

Output

{
  "ID" : "1",
  "age" : "20",
  "firstName" : "firstname1",
  "lastname" : "lastname1",
  "address" : [ {
    "code" : "zipCode",
    "value" : "zipcode1"
  }, {
    "code" : "street",
    "value" : "street1"
  }, {
    "code" : "city",
    "value" : "city1"
  }, {
    "code" : "country",
    "value" : "country"
  } ],
  "gender" : "gender1",
  "grade" : "grade1",
  "birthday" : "birthday1"
}

所需的 output 可能如下所示。 我的意思是地址中字段代碼的值,可以自定義(自定義字段):

{
      "ID" : "1",
      "age" : "20",
      "firstName" : "firstname1",
      "lastname" : "lastname1",
      "address" : [ {
        "code" : "**custom-field1**",
        "value" : "zipcode1"
      }, {
        "code" : "**custom-field2**",
        "value" : "street1"
      }, {
        "code" : "**custom-field3**",
        "value" : "city1"
      }, {
        "code" : "**custom-field4**",
        "value" : "country"
      } ],
      "gender" : "gender1",
      "grade" : "grade1",
      "birthday" : "birthday1"
    }

提前致謝。

在這種情況下,通過在每個所需的自定義值前面加上#通配符來單獨改寫屬於address數組的每個屬性,因為它們沒有共同的因素,例如

[
  {
    "operation": "shift",
    "spec": {
      "userId": "ID",
      "*": "&",
      "zipCode": {
        "#custom-field1": "adr_&1.code",
        "@": "adr_&.value"
      },
      "street": {
        "#custom-field2": "adr_&1.code",
        "@": "adr_&.value"
      },
      "city": {
        "#custom-field3": "adr_&1.code",
        "@": "adr_&.value"
      },
      "country": {
        "#custom-field4": "adr_&1.code",
        "@": "adr_&.value"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "adr_*": "address[]"
    }
  }
]

網站http://jolt-demo.appspot.com/上的演示是

在此處輸入圖像描述

您可以考慮另一個圖書館Josson

https://github.com/octomix/josson

反序列化

Josson josson = Josson.fromJsonString(
    "{" +
    "    \"userId\": \"1\"," +
    "    \"age\": \"20\"," +
    "    \"firstName\": \"firstname1\"," +
    "    \"lastname\": \"lastname1\"," +
    "    \"zipCode\": \"zipcode1\"," +
    "    \"street\": \"street1\"," +
    "    \"city\": \"city1\"," +
    "    \"country\": \"country\"," +
    "    \"gender\": \"gender1\"," +
    "    \"grade\": \"grade1\"," +
    "    \"birthday\": \"birthday1\"" +
    "}");
    

轉型

JsonNode node = josson.getNode(
    "map(ID:userId, age, firstName, lastname," +
    "    address:collect(" +
    "              map(code:'custom-field1',value:zipCode)," +
    "              map(code:'custom-field2',value:street)," +
    "              map(code:'custom-field3',value:city)," +
    "              map(code:'custom-field4',value:country))," +
    "    gender, grade, birthday)");
System.out.println(node.toPrettyString());

Output

{
  "ID" : "1",
  "age" : "20",
  "firstName" : "firstname1",
  "lastname" : "lastname1",
  "address" : [ {
    "code" : "custom-field1",
    "value" : "zipcode1"
  }, {
    "code" : "custom-field2",
    "value" : "street1"
  }, {
    "code" : "custom-field3",
    "value" : "city1"
  }, {
    "code" : "custom-field4",
    "value" : "country"
  } ],
  "gender" : "gender1",
  "grade" : "grade1",
  "birthday" : "birthday1"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM