Fungsi JSON
Digunakan untuk: Aplikasi kanvas Aplikasi dipacu model Power Pages
Menjana rentetan teks JSON untuk jadual, rekod atau nilai.
Penerangan
Fungsi JSON mengembalikan perwakilan Notasi Objektif JavaScript (JSON) struktur data sebagai teks supaya ia sesuai untuk menyimpan atau menghantar di seluruh rangkaian. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf dan IETF RFC 8259 menerangkan format, yang digunakan secara meluas oleh JavaScript dan bahasa pengaturcaraan lain.
Aplikasi kanvas menyokong jenis data bahawa jadual ini menyenaraikan dengan terperinci tentang perwakilan teks mereka:
Jenis data | Penerangan | Contoh hasil |
---|---|---|
Boolean | benar atau salah. | true |
Warna | Rentetan yang mengandungi 8-digit perwakilan perenambelasan untuk warna. Perwakilan ini mengambil format #rrggbbaayang mana rr adalah komponen merah, gg adalah hijau, bb adalah biru dan aa adalah saluran alfa.. Untuk saluran alfa, 00 adalah telus sepenuhnya dan ff adalah legap sepenuhnya. Anda boleh menghantar rentetan ke fungsi ColorValue. | "#102030ff" |
Mata wang | Nombor yang menggunakan pemisah perpuluhan yang sesuai untuk bahasa pengguna. Notasi saintifik digunakan jika diperlukan. | 1.345 |
Tarikh | Rentetan yang mengandungi tarikh dalam format ISO 8601 hh-bb-tttt. | "2019-03-31" |
TarikhMasa | Rentetan yang mengandungi tarikh/masa ISO 8601. Nilai tarikh/masa berada dalam UTC seperti yang ditunjukkan akhir "Z". | "2019-03-31T22:32:06.822Z" |
GUID | Rentetan yang mengandungi nilai GUID. Huruf kecil. | "751b58ac-380e-4a04-a925-9f375995cc40" |
Imej, Media | Jika JSONFormat.IncludeBinaryData ditentukan, fail media dikodkan dalam rentetan. Rujukan web yang menggunakan http: atau https: skema URL tidak diubah suai. Rujukan ke data binari dalam memori dikodkan dengan "data:mimetype;base64,..." format. Data dalam memori termasuk imej yang dirakam oleh pengguna dengan menggunakan kawalan Kamera dan sebarang rujukan lain dengan appres: dan blob: skema URL. | "data:image/jpeg;base64,/9j/4AA..." |
Nombor | Nombor yang menggunakan pemisah perpuluhan yang sesuai untuk bahasa pengguna. Notasi saintifik digunakan jika diperlukan. | 1.345 |
set pilihan | Nilai angka bagi pilihan, bukan label yang digunakan untuk paparan. Nilai angka digunakan kerana ia bahasa bebas. | 1001 |
Masa | Rentetan yang mengandungi format ISO 8601 hh:mm:ss.fff. | "23:12:49.000" |
Rekod | Senarai dipisahkan koma, antara { dan }, medan dan nilai mereka. Notasi ini menyerupai rekod dalam aplikasi kanvas, tetapi namanya selalu berada antara tanda petikan berganda. Format ini tidak menyokong rekod yang berdasarkan pada hubungan banyak kepada satu. | { "First Name": "Fred", "Age": 21 } |
Jadual | Senarai dipisahkan koma, antara [ dan ], bagi rekod. Format ini tidak menyokong jadual yang berdasarkan pada hubungan satu kepada banyak. Gunakan pilihan JSONFormat.FlattenValueTables untuk mengalih keluar rekod bagi jadual lajur tunggal dengan lajur bernama Nilai. | [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ] |
Dua pilihan | Nilai BBoolean daripada dua pilihan, benar atau palsu, bukan label yang digunakan untuk paparan. Nilai Boolean digunakan kerana bahasa itu bebas. | false |
Hiperpautan, Teks | Rentetan antara tanda petikan berganda. Fungsi ini melepaskan tanda petikan berganda yang terbenam dengan garis miring balik, menggantikan baris baharu dengan "\n", dan membuat penggantian JavaScript standard yang lain. | "This is a string." |
Tentukan argumen Format pilihan untuk mengawal cara hasil boleh dibaca dan cara jenis data yang tidak disokong dan binari ditangani. Secara lalai, output itu adalah sepadat yang mungkin tanpa ruang atau baris baharu yang tidak perlukan, dan jenis data yang tidak disokong serta data binari adalah tidak dibenarkan. Anda boleh menggabungkan pelbagai format jika anda menentukan operator &.
JSONFormat enum | Description |
---|---|
JSONFormat.Compact | Lalai. Output adalah sepadat yang mungkin tanpa ruang tambahan atau baris baharu. |
JSONFormat.FlattenValueTables | Sebagai jadual Nilai, notasi menghasilkan jadual yang mengandungi rekod di mana setiap rekod mempunyai lajur Nilai [1,2,3] tunggal . Dalam JSON, notasi yang sama mewakili tatasusunan tiga nombor. Untuk menjadikan kebolehoperasian antara kedua-duanya lebih mudah, pilihan ini meratakan Power Fx jadual Nilai kepada tatasusunan mesra JSON dan bukannya tatasusunan rekod. |
JSONFormat.IndentFour | Untuk meningkatkan kebolehbacaan, output mengandungi garis baharu untuk setiap lajur dan tahap bersarang serta menggunakan empat ruang untuk setiap tahap pengengsotan. |
JSONFormat.IncludeBinaryData | Hasil termasuk lajur imej, video dan klip audio. Format ini dapat meningkatkan saiz hasil secara mendadak dan menurunkan prestasi aplikasi anda. |
JSONFormat.IgnoreBinaryData | Hasil tidak termasuk lajur imej, video atau klip audio. Jika anda tidak menentukan JSONFormat.IncludeBinaryData mahupun JSONFormat.IgnoreBinaryData, fungsi menghasilkan ralat jika ia menemui data binari. |
JSONFormat.IgnoreUnsupportedTypes | Jenis data yang tidak disokong dibenarkan tetapi hasil tidak akan menyertakannya. Jenis data yang tidak disokong menghasilkan ralat secara lalai. |
Gunakan fungsi ShowColumns dan DropColumns untuk mengawal data yang termasuk dalam hasil dan mengalih keluar jenis daya yang tidak disokong.
Oleh sebab JSON boleh menjadi memori dan mengira yang intensif, anda boleh menggunakan fungsi ini hanya dalam fungsi tingkah laku. Anda boleh merekodkan hasil dari JSON ke dalam pemboleh ubah, yang kemudian anda boleh gunakan dalam aliran data.
Jika lajur mempunyai nama paparan dan nama logik, hasil akan mengandungi nama logik. Nama paparan menunjukkan bahasa pengguna aplikasi, oleh itu, tidak sesuai untuk pemindahan data ke perkhidmatan biasa.
Sintaks
JSON( DataStructure [, Format ] )
- DataStructure – Diperlukan. Struktur data untuk ditukarkan ke JSON. Jadual, rekod dan nilai primitif disokong, sewenang-wenangnya disarang.
- Format - Pilihan. JSONFormat enum value. Nilai lalai ialah JSONFormat.Compact, yang tidak menambah baris baharu atau ruang serta menyekat data binari dan lajur yang tidak disokong.
Contoh
Data berhierarki
Sisip kawalan Butang dan tetapkan sifat OnSelect kepada formula 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" ) )
Pilih butang semasa menekan kunci Alt.
Koleksi CitiesByCountry dicipta dengan struktur data ini yang boleh anda tunjukkan dengan memilih Koleksi pada menu Fail dan kemudian memilih nama koleksi.
Anda boleh juga menunjukkan koleksi ini dengan memilih Tetapan>Ciri akan datang>Dayakan pandangan hasil bar formula, memilih nama koleksi dalam bar formula dan kemudian memilih anak panah bawah bersebelahan nama koleksi di bawah bar formula.
Sisipkan butang lain dan tetapkan sifat OnSelect untuk formula ini:
Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
Formula ini menetapkan pemboleh ubah global CitiesByCountryJSON kepada perwakilan JSON untuk CitiesByCountry.
Pilih butang semasa menekan kunci Alt.
Sisipkan kawalan Label dan tetapkan sifat Teks kepada pemboleh ubah ini.
CitiesByCountryJSON
Label menunjukkan hasil ini, semuanya dalam baris tunggal tanpa ruang, sesuai untuk penghantaran melalui rangkaian:
[ { "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 formula butang kedua untuk menjadikan output lebih mudah dibaca.
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
Pilih butang kedua sambil menahan kekunci Alt.
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" } ]
Imej dan media dalam base64
Tambah kawalan Imej.
Kawalan ini membawa SampleImage dengannya.
Tambah kawalan Butang dan tetapkan sifat OnSelect kepada formula ini.
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
Pilih butang semasa menekan kunci Alt.
Tambah label dan tetapkan sifat Teks untuk pemboleh ubah ini.
ImageJSON
Saiz semula kawalan dan kurangkan saiz fon yang diperlukan untuk menunjukkan sebahagian besar hasil.
Label menunjukkan rentetan teks yang JSON fungsi direkod.
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
Jadual nilai
Formula ini:
JSON( [1,2,3] )
Menghasilkan rentetan teks [{"Value":1},{"Value":2},{"Value":3}].
Formula yang sama dengan pilihan JSONFormat.FlattenValueTables:
JSON( [1,2,3], JSONFormat.FlattenValueTables )
Menghasilkan rentetan teks[1,2,3].
Ambil perhatian bahawa pilihan FlattenValueTables tidak mempunyai kesan apabila menggunakan JSON dengan koleksi CityPopulations atau CitiesByCountry kerana jadual ini bukan jadual Nilai. Jadual Nilai mempunyai lajur tunggal dan ia mesti dinamakan "Nilai".