Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Aplikasi Kanvas
Copilot Studio
Model-driven aplikasi
Power Platform CLI
Dataverse fungsi
Power Pages
Menginterpretasikan string JSON dan mengembalikan nilai Dinamis atau nilai jenis tertentu jika jenis disediakan.
Penting
- Menggunakan argumen kedua untuk ParseJSON mengonversi ke objek yang ditik adalah fitur eksperimental.
- Fitur eksperimental tidak dibuat untuk penggunaan produksi dan mungkin memiliki fungsionalitas yang dibatasi. Fitur-fitur ini tersedia sebelum rilis resmi sehingga Anda bisa mendapatkan akses awal dan memberikan umpan balik. Informasi lebih lanjut: Memahami fitur eksperimental, pratinjau, dan dihentikan di aplikasi kanvas
- Perilaku yang dijelaskan artikel ini hanya tersedia jika fitur Eksperimental Jenis yang ditentukan pengguna di Setelan > Fitur yang > akan datang Eksperimental diaktifkan (dinonaktifkan secara default).
- Umpan balik Anda sangat berharga bagi kami. Beri tahu kami pendapat Anda di Power Apps forum komunitas fitur eksperimental.
Description
Fungsi ini ParseJSON menguraikan string JSON yang valid dan mengembalikan nilai Dinamis yang mewakili struktur JSON.
Secara opsional, gunakan argumen kedua untuk mengonversi JSON menjadi objek yang diketik yang dapat langsung digunakan dalam Power Fx rumus. Hal ini membuat hasilnya lebih mudah dikonsumsi karena konversi dan paksaan pada titik penggunaan tidak lagi diperlukan. JSON yang tidak diketik dipetakan ke jenis dengan aturan berikut:
- Kolom dalam jenis yang tidak ada dalam JSON diisi dengan kosong.
- Kolom dalam JSON yang tidak ada dalam jenis diabaikan.
- Kolom yang berada dalam jenis dan JSON, nilai JSON harus dapat dipaksakan ke jenis.
Fungsi ParseJSON ini dapat mengembalikan kesalahan jika teks tidak valid JSON sesuai dengan format JavaScript Object Notation (JSON) yang dijelaskan dalam ECMA-404 dan IETF RFC 8259.
Sintaks
ParseJSON( JSONString [ , Jenis ] )
- JSONString – Wajib. Struktur JSON dinyatakan sebagai teks.
- Jenis - Opsional. Definisi Power Fx jenis untuk struktur JSON. Tanpa argumen ini, ParseJSON mengembalikan nilai dinamis; dengan itu fungsi mengembalikan nilai yang ditik tertentu.
Mengonversi nilai Dinamis
Tanpa argumen kedua, ParseJSON mengembalikan nilai Dinamis yang memerlukan konversi eksplisit nilai bidang dalam jenis data yang didukung. Tabel berikut mencantumkan jenis data dalam Power Apps dan jenis data JSON terkait dan cara mengkonversinya.
| Tipe data | Contoh JSON | Description | Contoh konversi |
|---|---|---|---|
| Boolean | { "bool": true } |
Boolean adalah jenis eksplisit dalam JSON dan dapat langsung dikonversi. | Boolean( ParseJSON("{ ""bool"": true }").bool ) |
| Warna | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Tidak ada jenis warna di JSON. Nilai warna dapat dibuat dari bilangan bulat RGBA atau string heksadesimal. |
ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) |
| Mata uang, Angka | { "numbervalue": 123.5 } |
Angka dinyatakan secara langsung dalam JSON dengan tanda titik ( . ) sebagai pemisah desimal. | Nilai( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
| Tanggal, TanggalWaktu, Waktu | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
JSON tidak memiliki tanggal atau jenis waktu sehingga hanya dapat menyatakan tanggal dan waktu sebagai string. Nilai dinamis dapat langsung dikonversi dari string dalam format ISO 8601 ke tanggal, waktu, atau tanggalwaktu. Untuk format lain, konversi terlebih dulu bidang JSON ke teks menggunakan fungsi Text(), lalu gunakan fungsi DateValue(), TimeValue() atau DateTimeValue() yang secara default akan menggunakan bahasa pengaturan pengguna saat ini. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON tidak memiliki jenis data untuk GUId sehingga hanya dapat dinyatakan sebagai string. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| HyperLink, Gambar, Media | { "URI": "https://northwindtraders.com/logo.jpg" } |
Jenis data tersebut adalah jenis data teks, dan dapat dikonversi ke teks dan kemudian digunakan di Power Apps. | Teks( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| Pilihan | { "status": 1 }{ "status": "Closed" } |
Pilihan disajikan sebagai string yang dilokalkan, yang didukung oleh angka. Fungsi JSON() membuat serial pilihan untuk nomor dukungannya. Tidak ada konversi langsung dari angka atau string ke pilihan, namun fungsi Switch() atau If() dapat digunakan pada teks atau nilai angka. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| Rekaman | { "field": "value" } |
Tidak ada konversi langsung dari objek JSON ke struktur rekaman, tetapi bidang individual dapat diambil dari nilai Dinamis untuk membentuk rekaman. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| Referensi rekaman | t/a | Referensi rekaman bersifat unik untuk sumber daya data dan tidak dapat diserialisasi atau tidak diserialisasi. Nilai bidang yang menyatakan kunci unik dapat digunakan di JSON untuk mengidentifikasi rekaman yang kemudian dapat dicari. | t/a |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON dapat berisi larik, yang dapat dikonversi menjadi tabel. Nilai ini dapat merupakan larik rekaman, atau larik nilai yang secara efektif merupakan tabel kolom tunggal. ParseJSON() array hanya dapat dikonversi menjadi tabel kolom tunggal dari nilai Dinamis , dan dapat digunakan seperti itu atau dikonversi ke tabel rekaman yang ditik menggunakan ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| SMS | { "stringField": "this is text" } |
Text adalah jenis eksplisit dalam JSON dan dapat langsung dikonversi. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField ) |
| Dua pilihan | { "available": true }{ "available": "Yes" } |
Dua opsi disajikan sebagai string yang dilokalkan, yang didukung oleh Boolean. Fungsi JSON() membuat dua pilihan ke nilai boolean-nya. Tidak ada konversi langsung dari boolean, angka atau string ke dua pilihan, namun fungsi Switch() atau If() dapat digunakan pada teks, angka, atau nilai boolean. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
Contoh
mengakses Nilai Bidang
Dengan string JSON berikut dalam variabel bernama JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- Rumus berikut menghasilkan teks
text value:Text( ParseJSON( JsonString ).parent.child ) - Rumus berikut menghasilkan angka
567:Value( ParseJSON( JsonString ).number )
Jika nama bidang terdiri dari nama pengidentifikasi tidak valid, Anda dapat memasukkan nama bidang dalam satu kuotasi.
Dengan string JSON berikut dalam variabel bernama JsonString
{ "0": { "child-field": "text value" } }
- Rumus berikut menghasilkan teks
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
Kosong
Dengan string JSON berikut dalam variabel bernama JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Mencoba mengakses bidang yang tidak ada akan menghasilkan Blank(). rumus berikut ini menghasilkan
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - Nilai JSON
nulldianggap Blank(). rumus berikut ini menghasilkantrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Larik Sederhana
Dengan string JSON berikut dalam variabel bernama JsonString
{ "array": [1, 2, 3] }
- Mengakses angka kedua dalam tabel kolom tunggal nilai Dinamis bidang array dan mengonversi ke angka menggunakan Value() mengembalikan
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Mengonversi tabel kolom tunggal dari nilai dinamis di bidang array, menjadi satu tabel kolom angka
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Larik rekaman
Dengan string JSON berikut dalam variabel bernama JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Mengonversi ke tabel rekaman yang ditik langsung dengan ForAll() dapat dilakukan dengan menggunakan
ThisRecord.[fieldname]untuk mengakses bidang dinamis dan mengonversinya ke jenis tertentu:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
larik ke tabel
- Mengonversi nilai dinamis ke tabel dengan menggunakan fungsi Table() menghasilkan tabel kolom tunggal dari nilai dinamis . Objek harus diakses menggunakan kolom
Value(tunggal) dan dikonversi ke jenis seperti dijelaskan sebelumnya.
Dengan string JSON berikut dalam variabel bernama JsonString
{ "array": [1, 2, 3] }
Table() mengembalikan tabel kolom tunggal dari nilai dinamis dengan Nilai kolom tunggal untuk angka dalam array...
Set(untypedTable, Table( ParseJSON( JsonString ).array ));
Value( Index(untypedTable, 1).Value.Value )
```
Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Table() mengembalikan tabel kolom tunggal dari nilai dinamis yang mewakili setiap objek json dalam array.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )