Bagikan melalui


Fungsi JSON

Berlaku untuk: Aplikasi kanvas Aplikasi berdasarkan model Power Pages

Menghasilkan string teks JSON untuk tabel, rekaman, atau nilai.

KETERANGAN

Fungsi JSON menghasilkan representasi JavaScript Object Notation (JSON) struktur data sebagai teks sehingga cocok untuk menyimpan atau mentransmisikan di seluruh jaringan. [ECMA-404] (https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf dan IETF RFC 8259 menjelaskan formatnya, yang banyak digunakan oleh JavaScript dan bahasa pemrograman lainnya.

Aplikasi Kanvas mendukung jenis data yang didaftarkan tabel ini dengan detail tentang representasi teks:

Jenis data KETERANGAN Contoh hasil
Boolean true atau false. true
Warna String yang berisi representasi heksadesimal 8-digit untuk warna. Representasi ini mengambil format #rrggbbaa, dengan rr adalah komponen mérah, gg adalah hijau, bb adalah biru, dan aa adalah saluran alfa. Untuk saluran alfa, 00 sepenuhnya transparan, dan ff sepenuhnya buram. Anda dapat meneruskan string ke fungsi ColorValue. "#102030ff"
Mata Uang Angka yang menggunakan pemisah desimal yang sesuai untuk bahasa pengguna. Notasi ilmiah digunakan jika diperlukan. 1.345
Tanggal String yang berisi tanggal dalam ISO 8601 format tttt-bb-hh. "2019-03-31"
Datetime String yang berisi tanggal/waktu ISO 8601. Nilai tanggal/waktu di UTC, seperti yang ditunjukkan akhiran "Z". "2019-03-31T22:32:06.822Z"
GUID String yang berisi nilai GUID. Hurufnya adalah huruf kecil. "751b58ac-380e-4a04-a925-9f375995cc40"
Gambar, Media Jika JSONFormat.IncludeBinaryData ditentukan, file media dikodekan dalam string. Referensi web yang menggunakan skema URL http: atau https: tidak akan dimodifikasi. Referensi untuk data biner dalam memori dienkodekan dengan format "data:mimetype;base64,...". Data dalam memori mencakup gambar yang diambil pengguna menggunakan kontrol Kamera dan referensi lain dengan skema appres: dan blob: URL. "data:image/jpeg;base64,/9j/4AA..."
Nomor Angka yang menggunakan pemisah desimal yang sesuai untuk bahasa pengguna. Notasi ilmiah digunakan jika diperlukan. 1.345
Rangkaian pilihan Nilai numerik pilihan, bukan label yang digunakan untuk tampilan. Nilai numerik digunakan karena tidak tergantung bahasa. 1001
Waktu String yang berisi format ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Rekaman Daftar dibatasi koma, antara { dan }, pada bidang dan nilainya. Notasi ini menyerupai rekaman di aplikasi kanvas, namun nama tersebut selalu berada di antara tanda kutip ganda. Format ini tidak mendukung rekaman yang didasarkan pada hubungan banyak ke satu. { "First Name": "Fred", "Age": 21 }
Table Daftar yang dibatasi koma, antara [ dan ] rekaman. Format ini tidak mendukung tabel yang didasarkan pada hubungan satu ke banyak. Gunakan opsi JSONFormat.FlattenValueTables untuk menghapus rekaman untuk tabel kolom tunggal dengan kolom bernama Value. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dua pilihan Nilai Boolean dari dua opsi, true atau false, bukan label yang digunakan untuk tampilan. Nilai Boolean digunakan karena tidak tergantung bahasa. false
Hyperlink, Text String di antara tanda kutip ganda. Fungsi ini meloloskan tanda kutip ganda yang disematkan dengan garis miring terbalik, menggantikan baris baru dengan "\n", dan membuat penggantian JavaScript standar lainnya. "This is a string."

Tentukan argumen Format opsional untuk mengontrol bagaimana hasil dapat dibaca dan cara menangani jenis data biner yang tidak didukung. Secara default, output dibuat seringkas mungkin tanpa spasi atau baris baru, serta jenis data yang tidak didukung dan data biner tidak diizinkan. Anda dapat menggabungkan beberapa format jika Anda menentukan operator & .

Enum JSONFormat Description
JSONFormat.Compact Default. Output dibuat seringkas mungkin tanpa spasi atau baris baru ditambahkan.
JSONFormat.FlattenValueTables Sebagai tabel Nilai, [1,2,3] notasi menghasilkan tabel yang berisi catatan di mana setiap catatan memiliki satu kolom Nilai . Dalam JSON, notasi yang sama mewakili array tiga angka. Untuk mempermudah interoperabilitas antara keduanya, opsi ini meratakan Power Fx tabel Value ke array ramah JSON alih-alih array rekaman.
JSONFormat.IndentFour Untuk meningkatkan kemudahan pembacaan, output berisi baris baru untuk setiap tingkat kolom dan pencadangan dan menggunakan empat spasi untuk setiap tingkat indentasi.
JSONFormat.IncludeBinaryData Hasilnya mencakup kolom gambar, video, dan klip audio. Format ini dapat secara dramatis meningkatkan ukuran hasil dan menurunkan performa aplikasi.
JSONFormat.IgnoreBinaryData Hasilnya tidak mencakup kolom gambar, video, atau klip audio. Jika Anda tidak menentukan JSONFormat.IncludeBinaryData maupun JSONFormat.IgnoreBinaryData, fungsi akan menghasilkan kesalahan jika menemukan data biner.
JSONFormat.IgnoreUnsupportedTypes Jenis data yang tidak didukung diizinkan, namun hasil tidak mencakupnya. Secara default, jenis data yang tidak didukung menghasilkan kesalahan.

Gunakan fungsi ShowColumns dan DropColumns untuk mengontrol data yang tercakup hasil dan untuk menghilangkan jenis data yang tidak didukung.

Karena JSON dapat berupa memori dan intensif komputasi, Anda dapat menggunakan fungsi ini hanya dalam fungsi perilaku. Anda dapat mengambil hasil dari JSON ke variabel, yang kemudian dapat Anda gunakan dalam aliran data.

Jika kolom memiliki nama tampilan dan nama logika, hasilnya berisi nama logika. Nama tampilan mencerminkan bahasa pengguna aplikasi dan, karenanya, tidak sesuai untuk transfer data ke layanan umum.

Sintaks

JSON( DataStructure [, Format ] )

  • DataStructure – Wajib. Struktur data untuk dikonversi ke JSON. Tabel, rekaman, dan nilai primitif didukung dan dicadangkan secara acak.
  • Format - Opsional. JSONFormat nilai enum. Nilai defaultnya adalah JSONFormat.Compact, yang tidak menambahkan baris baru atau spasi dan memblokir data biner dan kolom yang tidak didukung.

Contoh

Data hierarki

  1. Sisipkan kontrol Tombol, dan atur properti OnSelect ke rumus ini.

    ClearCollect( CityPopulations,
        { City: "London",    Country: "United Kingdom", Population: 8615000 },
        { City: "Berlin",    Country: "Germany",        Population: 3562000 },
        { City: "Madrid",    Country: "Spain",          Population: 3165000 },
        { City: "Hamburg",   Country: "Germany",        Population: 1760000 },
        { City: "Barcelona", Country: "Spain",          Population: 1602000 },
        { City: "Munich",    Country: "Germany",        Population: 1494000 }
    );
    ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
    
  2. Sambil menekan terus tombol Alt, pilih tombol.

    Koleksi CitiesByCountry dibuat dengan struktur data ini, yang dapat Anda tampilkan dengan memilih Collections pada menu File, lalu memilih nama koleksi.

    Koleksi CitiesByCountry.

    Anda juga dapat menampilkan koleksi ini dengan memilih Pengaturan>Fitur yang Akan Datang>Aktifkan tampilan hasil bilah rumus, memilih nama koleksi di bilah rumus, lalu memilih panah bawah di samping nama koleksi di dalam bilah rumus.

    Koleksi dalam tampilan hasil bilah rumus.

  3. Sisipkan tombol lain, dan atur properti OnSelect ke rumus ini:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Rumus ini menetapkan variabel global CitiesByCountryJSON ke representasi JSON untuk CitiesByCountry.

  4. Sambil menekan terus tombol Alt, pilih tombol.

  5. Sisipkan kontrol Label, dan atur properti Teks ke variabel ini:

    CitiesByCountryJSON
    

    Label ini menunjukkan hasil ini, semuanya pada satu baris tanpa spasi, cocok untuk transmisi di seluruh jaringan:

    [
      {
        "Cities": [{ "City": "London", "Population": 8615000 }],
        "Country": "United Kingdom"
      },
      {
        "Cities": [
          { "City": "Berlin", "Population": 3562000 },
          { "City": "Hamburg", "Population": 1760000 },
          { "City": "Munich", "Population": 1494000 }
        ],
        "Country": "Germany"
      },
      {
        "Cities": [
          { "City": "Madrid", "Population": 3165000 },
          { "City": "Barcelona", "Population": 1602000 }
        ],
        "Country": "Spain"
      }
    ]
    
  6. Ubah rumus tombol kedua untuk membuat output menjadi lebih mudah dibaca.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Sambil menekan terus tombol Alt, pilih tombol kedua.

    Label menunjukkan hasil yang lebih mudah dibaca.

    [
      {
        "Cities": [
          {
            "City": "London",
            "Population": 8615000
          }
        ],
        "Country": "United Kingdom"
      },
      {
        "Cities": [
          {
            "City": "Berlin",
            "Population": 3562000
          },
          {
            "City": "Hamburg",
            "Population": 1760000
          },
          {
            "City": "Munich",
            "Population": 1494000
          }
        ],
        "Country": "Germany"
      },
      {
        "Cities": [
          {
            "City": "Madrid",
            "Population": 3165000
          },
          {
            "City": "Barcelona",
            "Population": 1602000
          }
        ],
        "Country": "Spain"
      }
    ]
    

Gambar dan media di base64

  1. Tambahkan kontrol Gambar.

    Kontrol ini menghadirkan SampleImage bersamanya.

  2. Tambahkan kontrol Tombol dan atur properti OnSelect ke rumus ini.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Sambil menekan terus tombol Alt, pilih tombol.

  4. Tambahkan label dan atur properti Teks ke variabel ini.

    ImageJSON
    
  5. Ubah ukuran kontrol dan kurangi ukuran font seperlunya untuk menunjukkan sebagian besar hasil.

    Label menunjukkan string teks yang diambil oleh fungsi JSON.

    "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
    

Tabel nilai

Rumus ini:

JSON( [1,2,3] )

Menghasilkan string teks[{"Value":1},{"Value":2},{"Value":3}].

Rumus yang sama dengan opsi JSONFormat.FlattenValueTables:

JSON( [1,2,3], JSONFormat.FlattenValueTables )

Menghasilkan string teks[1,2,3].

Perhatikan bahwa opsi FlattenValueTables tidak berdampak saat menggunakan JSON dengan koleksi CityPopulations atau CitiesByCountry karena tabel ini bukan tabel Nilai. Tabel Nilai memiliki satu kolom dan harus diberi nama "Nilai".