Bagikan melalui


Fungsi ParseJSON

Berlaku untuk: Aplikasi kanvas Aplikasi Power Platform berbasis model CLI

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. Larik ParseJSON() hanya dapat dikonversi menjadi satu tabel kolom dari objek yang tidak berjenis dan dapat digunakan sebagai seperti adanya atau dikonversi ke tabel rekaman yang berjenis 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"": ""ini 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.Yes )

Contoh

mengakses Nilai Bidang

Dengan string JSON berikut dalam variabel bernama JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Rumus berikut menghasilkan teks text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. 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" } }
  1. 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 }
  1. Mencoba mengakses bidang yang tidak ada akan menghasilkan Blank(). rumus berikut ini menghasilkan true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. Nilai JSON null dianggap Blank(). rumus berikut ini menghasilkan true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Larik Sederhana

Dengan string JSON berikut dalam variabel bernama JsonString

{ "array": [1, 2, 3] }
  1. 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 ) )
    
  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"}
    ] }
  1. 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

  1. 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() menghasilkan tabel satu kolom dari objek yang tidak berjenis dengan Nilai kolom tunggal untuk angka di larik...

 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() menghasilkan tabel satu kolom dari objek tidak berjenis yang menunjukkan setiap objek json dalam larik.

  Set(untypedTable, Table( ParseJSON( JsonString ).array );
  
  Text( Index(untypedTable, 1).Value.name )