Fungsi ParseJSON
Berlaku untuk: Aplikasi kanvas CLI Aplikasi Power Pages Power Platform berdasarkan model
Mengartikan string JSON dan menghasilkan objek yang tidak berjenis.
Description
Fungsi ParseJSON akan mengurai string JSON yang valid dan menghasilkan objek tidak berjenis yang menunjukkan struktur JSON.
Fungsi ParseJSON dapat mengembalikan kesalahan jika teks bukan JSON yang valid sesuai dengan format JavaScript Object Notation (JSON) yang dijelaskan dalam ECMA-404 dan IETF RFC 8259.
Sintaks
ParseJSON( JSONString )
- JSONString – Wajib. Struktur JSON dinyatakan sebagai teks.
Mengkonversi jenis data objek tidak berjenis
ParseJSON menghasilkan objek tidak berjenis yang memerlukan konversi eksplisit nilai bidang pada 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. | Value( 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. Objek yang tidak berjenis dapat secara langsung dikonversi dari string dalam format ISO 8601 ke tanggal, waktu, atau datetime. 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"": ""5 Mei 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. | Text( 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, namun bidang individual dapat diambil dari objek yang tidak berjenis 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. Array ParseJSON() hanya dapat dikonversi menjadi tabel kolom tunggal dari objek yang tidak diketik, dan dapat digunakan seperti itu atau dikonversi menjadi tabel rekaman yang diketik menggunakan ForAll(). | ForAll( Table( ParseJSON( "[ { "id"": 1, ""name"": ""satu"" }, { "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"": ""ini adalah teks""") }.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.Ya ) |
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
null
dianggap 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 objek tak berjenis bidang larik dan mengkonversi ke angka menggunakan Value() menghasilkan
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Mengkonversi tabel satu kolom dari objek yang tidak berjenis pada bidang larik, ke tabel angka kolom tunggal
{ 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"}
] }
Mengkonversi ke tabel rekaman yang berjenis secara langsung dengan ForAll() dapat dilakukan dengan menggunakan
ThisRecord.[fieldname]
untuk mengakses bidang objek tidak berjenis dan mengkonversikannya ke jenis yang diketahui:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
larik ke tabel
- Mengkonversi objek yang tidak berjenis ke tabel menggunakan fungsi Table() menghasilkan tabel satu kolom dari objek yang tidak berjenis. 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 objek yang tidak diketik 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 objek yang tidak diketik yang mewakili setiap objek json dalam array.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )