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 | benar atau salah. | 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" |
TanggalWaktu | 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..." |
Angka | 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" |
Rekor | 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 } |
Meja | 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 opsi | Nilai Boolean dari dua opsi, true atau false, bukan label yang digunakan untuk tampilan. Nilai Boolean digunakan karena tidak tergantung bahasa. | false |
Hyperlink, Teks | 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.Ringkas | Default. Output dibuat seringkas mungkin tanpa spasi atau baris baru ditambahkan. |
JSONFormat.FlattenValueTables | Sebagai tabel Nilai, [1,2,3] notasi menghasilkan tabel yang berisi rekaman 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 Nilai 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 atau JSONFormat.IgnoreBinaryData, fungsi 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( Struktur Data[,Format ] )
- DataStructure – Wajib. Struktur data untuk dikonversi ke JSON. Tabel, rekaman, dan nilai primitif didukung dan dicadangkan secara acak.
- Format - Opsional. JSONFormat enum value. Nilai defaultnya adalah JSONFormat.Compact, yang tidak menambahkan baris baru atau spasi dan memblokir data biner dan kolom yang tidak didukung.
Contoh
Data hierarki
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" ) )
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.
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.
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.
Sambil menekan terus tombol Alt, pilih tombol.
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" } ]
Ubah rumus tombol kedua untuk membuat output menjadi lebih mudah dibaca.
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
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
Tambahkan kontrol Gambar.
Kontrol ini menghadirkan SampleImage bersamanya.
Tambahkan kontrol Tombol dan atur properti OnSelect ke rumus ini.
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
Sambil menekan terus tombol Alt, pilih tombol.
Tambahkan label dan atur properti Teks ke variabel ini.
ImageJSON
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".