Mengubah JSON dan XML menggunakan templat Liquid sebagai peta di alur kerja menggunakan Azure Logic Apps

Berlaku untuk: Azure Logic Apps (Konsumsi + Standar)

Saat Anda ingin menjalankan transformasi JSON dasar di alur kerja aplikasi logika, Anda dapat menggunakan operasi data bawaan, seperti tindakan Susun atau tindakan Urai JSON. Namun, beberapa skenario mungkin memerlukan transformasi tingkat lanjut dan kompleks yang mencakup elemen seperti perulangan, alur kontrol, dan variabel. Untuk transformasi antara JSON ke JSON, JSON ke teks, XML ke JSON, atau XML ke teks, Anda dapat membuat templat yang menjelaskan pemetaan atau transformasi yang diperlukan menggunakan bahasa templat sumber terbuka Liquid. Anda dapat memilih templat ini saat menambahkan tindakan bawaan Liquid ke alur kerja Anda. Anda dapat menggunakan tindakan Liquid di alur kerja aplikasi logika Konsumsi multipenyewa dan alur kerja aplikasi logika Standar penyewa tunggal.

Meskipun pemicu Liquid tidak tersedia, Anda dapat menggunakan pemicu atau tindakan apa pun untuk mendapatkan atau mengumpan konten JSON atau XML sumber ke dalam alur kerja. Misalnya, Anda dapat menggunakan pemicu konektor bawaan, pemicu konektor terkelola atau yang dihosting Azure yang tersedia untuk Azure Logic Apps, atau bahkan aplikasi lain.

Artikel ini memperlihatkan kepada Anda cara menyelesaikan tugas berikut:

  • Buat template Liquid.
  • Unggah templat ke akun integrasi Anda untuk alur kerja aplikasi logika Konsumsi atau ke sumber daya aplikasi logika Standar Anda untuk digunakan dalam alur kerja turunan mana pun.
  • Tambahkan tindakan Liquid ke alur kerja Anda.
  • Pilih template sebagai peta yang ingin Anda gunakan.

Untuk informasi selengkapnya, tinjau dokumentasi berikut ini:

Prasyarat

  • Akun dan langganan Azure. Jika Anda tidak memiliki langganan, daftar untuk mendapatkan akun Azure secara gratis.

  • Sumber daya dan alur kerja aplikasi logika Anda. Operasi Liquid tidak memiliki pemicu yang tersedia, sehingga alur kerja Anda harus menyertakan pemicu secara minimal. Untuk informasi selengkapnya, se dokumentasi berikut:

  • Berdasarkan apakah Anda bekerja pada alur kerja aplikasi logika Konsumsi atau Standar, Anda memerlukan sumber daya akun integrasi. Biasanya, Anda memerlukan sumber daya ini ketika Anda ingin menentukan dan menyimpan artefak untuk digunakan dalam integrasi perusahaan dan alur kerja B2B.

    Penting

    Untuk bekerja sama, akun integrasi dan sumber daya aplikasi logika Anda harus berada di langganan Azure dan wilayah Azure yang sama.

    • Apabila Anda bekerja pada alur kerja aplikasi logika Konsumsi, akun integrasi Anda memerlukan link ke sumber daya aplikasi logika Anda.

    • Apabila Anda bekerja pada alur kerja aplikasi logika Standar, Anda dapat menautkan akun integrasi ke sumber daya aplikasi logika, mengunggah peta secara langsung ke sumber daya aplikasi logika Anda, atau keduanya, berdasarkan skenario berikut:

      • Apabila Anda sudah memiliki akun integrasi dengan artefak yang Anda butuhkan atau ingin Anda gunakan, Anda dapat menautkan akun integrasi ke beberapa sumber daya aplikasi logika Standar tempat Anda ingin menggunakan artefak tersebut. Dengan demikian, Anda tidak perlu mengunggah peta ke setiap aplikasi logika individu. Untuk informasi selengkapnya, tinjau Menautkan sumber daya aplikasi logika Anda ke akun integrasi Anda.

      • Konektor bawaan Liquid membuat agar Anda dapat memilih peta yang sebelumnya Anda unggah ke sumber daya aplikasi logika atau ke akun integrasi tertaut, tetapi tidak keduanya. Kemudian, Anda dapat menggunakan artefak ini di seluruh alur kerja turunan di dalam sumber daya aplikasi logika yang sama.

      Jadi, apabila Anda tidak memiliki atau memerlukan akun integrasi, Anda dapat menggunakan opsi unggah. Jika tidak, Anda dapat menggunakan opsi penautan. Bagaimanapun, Anda dapat menggunakan artefak ini di seluruh alur kerja turunan di dalam sumber daya aplikasi logika yang sama.

  • Pengetahuan dasar tentang bahasa komputer template Liquid. Azure Logic Apps menggunakan DotLiquid 2.0.361.

    Catatan

    Tindakan Liquid bernama Ubah JSON ke JSON mengikuti implementasi DotLiquid untuk Liquid, yang berbeda dalam kasus tertentu dari implementasi Shopify untuk Liquid. Untuk informasi selengkapnya, lihat bagian pertimbangan template Liquid.

Langkah 1: Membuat templat

Sebelum Anda dapat melakukan transformasi Liquid di alur kerja aplikasi logika, Anda harus terlebih dahulu membuat templat Liquid yang menentukan pemetaan yang Anda inginkan.

  1. Buat template Liquid yang Anda gunakan sebagai peta untuk transformasi JSON. Anda dapat menggunakan alat pengeditan apa pun yang Anda inginkan.

    Contoh transformasi JSON ke JSON dalam artikel ini menggunakan sampel templat Liquid berikut:

    {%- assign deviceList = content.devices | Split: ', ' -%}
    
    {
       "fullName": "{{content.firstName | Append: ' ' | Append: content.lastName}}",
       "firstNameUpperCase": "{{content.firstName | Upcase}}",
       "phoneAreaCode": "{{content.phone | Slice: 1, 3}}",
       "devices" : [
          {%- for device in deviceList -%}
             {%- if forloop.Last == true -%}
             "{{device}}"
             {%- else -%}
             "{{device}}",
             {%- endif -%}
          {%- endfor -%}
       ]
    }
    
  2. Simpan templat menggunakan ekstensi file templat Liquid (.liquid). Contoh ini menggunakan SimpleJsonToJsonTemplate.liquid.

Langkah 2: Unggah templat Liquid

Setelah membuat templat Liquid, sekarang Anda harus mengunggah templat berdasarkan skenario berikut:

Mengunggah templat ke akun integrasi

  1. Di portal Microsoft Azure masuk dengan kredensial akun Azure Anda.

  2. Di kotak pencarian portal Azure, masukkan akun integrasi, dan pilih Akun integrasi.

    Screenshot showing the Azure portal search box with

  3. Temukan dan pilih akun integrasi Anda.

    Screenshot showing integration accounts pane with integration account selected.

  4. Pada menu navigasi akun integrasi, pada Pengaturan, pilih Peta.

    Screenshot showing integration account navigation menu with

  5. Pada panel Peta, pilih Tambahkan. Berikan informasi berikut mengenai peta Anda:

    Properti Nilai Deskripsi
    Nama JsonToJsonTemplate Nama untuk peta Anda, yaitu "JsonToJsonTemplate" dalam contoh ini
    Jenis peta Liquid Jenis peta Anda. Untuk transformasi JSON ke JSON, Anda harus memilih Liquid.
    Peta SimpleJsonToJsonTemplate.liquid Template atau file peta Liquid yang ada untuk digunakan untuk transformasi, yaitu "SimpleJsonToJsonTemplate.liquid" dalam contoh ini. Untuk menemukan file ini, Anda bisa menggunakan pemilih file. Untuk batas ukuran peta, lihat Batasan dan konfigurasi.

    Screenshot showing

Mengunggah templat ke aplikasi logika Standar

  1. Di portal Azure, cari dan buka sumber daya aplikasi logika Anda. Pastikan Anda berada di tingkat sumber daya, bukan tingkat alur kerja.

  2. Di menu navigasi sumber daya aplikasi logika Anda, pada Artefak, pilih Peta.

  3. Di bar alat panel Maps, pilih Add.

  4. Pada panel Tambahkan Peta, berikan informasi berikut tentang templat Anda:

    Properti Nilai Deskripsi
    Nama JsonToJsonTemplate Nama untuk peta Anda, yaitu "JsonToJsonTemplate" dalam contoh ini
    Jenis peta Liquid Jenis peta Anda. Untuk transformasi JSON ke JSON, Anda harus memilih Liquid.
    Peta SimpleJsonToJsonTemplate.liquid Template atau file peta Liquid yang ada untuk digunakan untuk transformasi, yaitu "SimpleJsonToJsonTemplate.liquid" dalam contoh ini. Untuk menemukan file ini, Anda bisa menggunakan pemilih file. Untuk batas ukuran peta, lihat Batasan dan konfigurasi.
  5. Setelah selesai, pilih OK.

    Setelah file peta Anda selesai diunggah, peta akan muncul di daftar Peta. Pada menu akun integrasi halaman Overview Anda, di bawah Artifacts, assembly Anda yang diunggah juga muncul.

Langkah 3: Tambahkan tindakan transformasi Liquid

Langkah-langkah berikut menunjukkan cara menambahkan tindakan transformasi Liquid untuk alur kerja aplikasi logika Konsumsi dan Standar.

  1. Di portal Azure, buka alur kerja aplikasi logika Anda di perancang, jika belum dibuka.

  2. Apabila alur kerja Anda tidak memiliki pemicu atau tindakan lain yang dibutuhkan alur kerja Anda, tambahkan operasi tersebut terlebih dahulu. Operasi liquid tidak memiliki pemicu yang tersedia.

    Contoh ini berlanjut dengan pemicu Permintaan bernama Saat permintaan HTTP diterima.

  3. Di perancang alur kerja, pada langkah tempat Anda ingin menambahkan tindakan Liquid, pilih Langkah baru.

  4. Di bawah kotak Pilih pencarian operasi, pilih Semua. Di kotak pencarian, masukkan liquid.

  5. Dari daftar tindakan, pilih tindakan Liquid yang ingin Anda gunakan.

    Contoh ini terus menggunakan tindakan bernama Ubah JSON ke JSON.

    Screenshot showing Consumption workflow designer with a Liquid action selected.

  6. Di properti Konten tindakan, berikan output JSON dari pemicu atau tindakan sebelumnya yang ingin Anda ubah dengan mengikuti langkah-langkah ini.

    1. Klik di dalam kotakKonten sehingga daftar konten dinamis muncul.

    2. Dari daftar konten dinamis, pilih data JSON yang ingin Anda ubah.

      Untuk contoh ini, dari daftar konten dinamis, pada Saat permintaan HTTP diterima, pilih token Isi, yang mewakili output konten isi dari pemicu.

      Screenshot showing Consumption workflow, Liquid action's

  7. Dari daftar Nama, pilih templat Liquid Anda.

    Contoh ini berlanjut dengan templat bernama JsonToJsonTemplate.

    Screenshot showing Consumption workflow, Liquid action's

    Catatan

    Jika daftar peta kosong, penyebabnya mungkin karena sumber daya aplikasi logika Anda tidak ditautkan ke akun integrasi, atau akun integrasi Anda tidak berisi file peta apa pun.

    Setelah selesai, tindakan tersebut terlihat mirip dengan contoh berikut:

    Screenshot showing Consumption workflow with finished

  8. Simpan alur kerja Anda. Di bar alat perancang, pilih Simpan.

Menguji alur kerja

  1. Dengan menggunakan Postman atau alat serupa dan metode POST, kirim panggilan ke URL pemicu Permintaan yang muncul di properti URL POST HTTP pemicu Permintaan, dan sertakan input JSON yang ingin Anda transformasi, sebagai contohnya:

    {
       "devices": "Surface, Mobile, Desktop computer, Monitors",
       "firstName": "Dean",
       "lastName": "Ledet",
       "phone": "(111)0001111"
    }
    
  2. Setelah alur kerja Anda selesai dijalankan, buka riwayat eksekusi alur kerja, dan periksa input dan output tindakan Ubah JSON menjadi JSON, misalnya:

    Screenshot showing example output.

Transformasi Liquid lainnya

Anda dapat menggunakan Liquid untuk melakukan transformasi lainnya, misalnya:

Ubah JSON ke teks

Templat Liquid berikut menampilkan contoh transformasi untuk JSON ke teks:

{{content.firstName | Append: ' ' | Append: content.lastName}}

Contoh berikut menampilkan sampel input dan output:

Screenshot showing example output for JSON to text transformation.

Ubah XML ke JSON

Templat Liquid berikut menampilkan contoh transformasi untuk XML ke JSON:

[{% JSONArrayFor item in content -%}
      {{item}}
  {% endJSONArrayFor -%}]

JSONArrayForLoop adalah mekanisme perulangan kustom untuk input XML sehingga Anda dapat membuat muatan JSON yang menghindari berikutnya koma. Selain itu, where kondisi untuk mekanisme perulangan kustom ini menggunakan nama elemen XML untuk perbandingan, alih-alih nilai elemen seperti filter Liquid lainnya. Untuk informasi selengkapnya, lihat Dalami Kebijakan set-body - Koleksi Barang.

Contoh berikut menampilkan sampel input dan output:

Screenshot showing example output for XML to JSON transformation.

Ubah XML ke JSON

Templat Liquid berikut menampilkan contoh transformasi untuk XML ke teks:

{{content.firstName | Append: ' ' | Append: content.lastName}}

Contoh berikut menampilkan sampel input dan output:

Screenshot showing example output for XML to text transformation.

Pertimbangkan template Liquid

  • Template Liquid mengikuti batas ukuran file untuk peta di Azure Logic Apps.

  • Tindakan Ubah JSON ke JSON mengikuti implementasi DotLiquid untuk Liquid. Implementasi ini adalah port ke .NET Framework dari implementasi Shopify untuk Liquid dan berbeda dalam kasus tertentu.

    Daftar berikut menjelaskan perbedaan yang diketahui:

    • Tindakan Ubah JSON ke JSON menghasilkan string secara asli, yang dapat mencakup JSON, XML, HTML, dan sebagainya. Tindakan Liquid hanya menunjukkan bahwa output teks yang diharapkan dari template Liquid adalah string JSON. Tindakan ini menginstruksikan aplikasi logika Anda untuk mengurai input sebagai objek JSON dan menerapkan pembungkus sehingga Liquid dapat menafsirkan struktur JSON. Setelah transformasi, tindakan menginstruksikan aplikasi logika Anda untuk mengurai output teks dari Liquid kembali ke JSON.

      DotLiquid tidak secara asli memahami JSON, jadi pastikan Anda melarikan diri dari karakter garis miring terbalik (\) dan karakter JSON lainnya yang dipesan.

    • Jika template Anda menggunakan Filter Liquid, pastikan Anda mengikuti konvensi penamaan DotLiquid dan C #, yang menggunakan casing kalimat. Untuk semua transformasi Liquid, pastikan bahwa nama filter di template Anda juga menggunakan casing kalimat. Jika tidak, filternya tidak akan berfungsi.

      Misalnya, saat Anda menggunakan filter replace, gunakan Replace, bukan replace. Aturan yang sama berlaku jika Anda mencoba contoh di DotLiquid online. Untuk informasi selengkapnya, lihat Filter Shopify Liquid dan Filter DotLiquid Liquid. Spesifikasi Shopify mencakup contoh untuk setiap filter, jadi sebagai perbandingan, Anda dapat mencoba contoh-contoh ini di DotLiquid - Coba online.

    • Filter json dari filter ekstensi Shopify saat ini tidak diimplementasikan di DotLiquid. Biasanya, Anda dapat menggunakan filter ini untuk menyiapkan output teks untuk penguraian string JSON, tetapi sebaliknya, Anda perlu menggunakan filter Replace sebagai gantinya.

    • Filter Replace standar dalam implementasi DotLiquid menggunakan pencocokan ekspresi reguler (RegEx), sedangkan implementasi Shopify menggunakan pencocokan string sederhana. Kedua implementasi tampaknya bekerja dengan cara yang sama sampai Anda menggunakan karakter pesanan RegEx atau karakter escape dalam parameter pencocokan.

      Misalnya, untuk menghindari karakter escape backslash yang dicadangkan RegEx (\), gunakan | Replace: '\\', '\\', dan bukan | Replace: '\', '\\'. Contoh-contoh ini menunjukkan bagaimana filter Replace berperilaku berbeda ketika Anda mencoba menghindari karakter backslash. Meskipun versi ini berhasil bekerja:

      { "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\\', '\\' | Replace: '"', '\"'}}"}

      Dengan hasil ini:

      { "SampleText": "The quick brown fox \"jumped\" over the sleeping dog\\\\"}

      Versi ini gagal:

      { "SampleText": "{{ 'The quick brown fox "jumped" over the sleeping dog\\' | Replace: '\', '\\' | Replace: '"', '\"'}}"}

      Dengan kesalahan ini:

      { "SampleText": "Liquid error: parsing "\" - Illegal \ at end of pattern."}

      Untuk informasi selengkapnya, lihat Ganti filter standar menggunakan pencocokan pola RegEx....

    • SortFilter dalam implementasi DotLiquid mengurutkan item dalam array atau koleksi menurut properti tetapi dengan perbedaan ini:

Langkah berikutnya