Как я могу подстроить преобразование JSON? И как работают «области видимости» JOLT?

#json #jolt

#json #jolt

Вопрос:

Я пытаюсь использовать JOLT transform, но это действительно беспорядок, как я могу преобразовать этот ipnut в этот вывод, используя JSON Transform? Я не понимаю синтаксиса JOLT. Когда я пытаюсь ввести подстроку «клиент», это работает, но когда я делаю то же самое с «датой», это не работает….

ВВОД

 {
  "client": "18f085b6-eca2-4f20-a5da-910b9043c8b3",
  "name": "clientName",
  "dateControl": {
    "date": "2020-07-16T14:08:53.708671 00:00"
  }
}
  

ВЫВОД

 {
  "client": "18f085b6-eca2-4f20-a5da-910b9043c8b3",
  "name": "clientName",
  "dateControl": {
    "date": "20200716"
  }
}
  

Комментарии:

1. Вы должны показать свой файл спецификации

Ответ №1:

Вы можете попробовать нижеприведенную спецификацию Jolt.

ВВОД

 {
  "dateTime": "2020-07-16T14:08:53.708671 00:00"
}
  

Спецификация Jolt

 [
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "dateTime": "=substring(@(1,dateTime),0,10)"
    }
  }
]
  

Вывод

 {
  "dateTime" : "2020-07-16"
}

  

Ответ №2:

Вы можете постепенно применять функции substring для извлечения первых десяти символов, чтобы получить только часть даты, затем split с помощью тире, чтобы join вернуться, чтобы избавиться от них вместе со спецификацией modify-overwrite-beta, а затем удалить вспомогательные пары ключ-значение с помощью спецификации remove. такие , как

Ввод:

 {
  "client": "18f085b6-eca2-4f20-a5da-910b9043c8b3",
  "name": "clientName",
  "dateControl": {
    "date": "2020-07-16T14:08:53.708671 00:00"
  }
}
  

Спецификация толчка:

 [
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "dateControl": {
        "date1": "=substring(@(1,date),0,10)",
        "date2": "=split('-',@(1,date1))",
        "date": "=join('',@(1,date2))"
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "dateControl": {
        "date1": "",
        "date2": ""
      }
    }
  }
]
  

Результат:

 {
  "client" : "18f085b6-eca2-4f20-a5da-910b9043c8b3",
  "name" : "clientName",
  "dateControl" : {
    "date" : "20200716"
  }
}