Kongsi melalui


Fungsi ParseJSON

Digunakan untuk: Aplikasi kanvas Aplikasi dipacu Power Pages Power Platform model CLI

Mentafsir rentetan JSON dan mengembalikan objek yang tidak ditaip atau objek yang ditaip.

Penting

  • Menggunakan hujah kedua kepada ParseJSON untuk menukar kepada objek yang ditaip ialah ciri percubaan.
  • Ciri percubaan bukan untuk kegunaan pengeluaran dan mungkin mempunyai kefungsian yang terhad. Ciri-ciri ini tersedia sebelum keluaran rasmi supaya anda boleh mendapatkan akses awal dan memberikan maklum balas. Maklumat lanjut: Fahami ciri percubaan, pratonton dan ditamatkan dalam aplikasi kanvas
  • Kelakuan yang diterangkan artikel ini hanya tersedia apabila ciri percubaan Jenis yang ditakrifkan pengguna dalam Seting, Ciri > akan > datang, Percubaan dihidupkan (ia dimatikan secara lalai).
  • Maklum balas anda sangat berharga kepada kami. Sila beritahu kami pendapat anda dalam Power Apps forum komuniti ciri percubaan.

Description

Fungsi ParseJSON menghuraikan rentetan JSON yang sah dan mengembalikan objek yang tidak ditaip yang mewakili struktur JSON.

Secara pilihan, gunakan hujah kedua untuk menukar JSON kepada objek yang ditaip yang boleh digunakan secara langsung dalam Power Fx formula. Ini menjadikan hasilnya lebih mudah digunakan kerana penukaran dan paksaan pada titik penggunaan tidak lagi diperlukan. JSON yang tidak ditaip dipetakan kepada jenis dengan peraturan ini:

  • Lajur dalam jenis yang tidak terdapat dalam JSON diisi dengan kosong.
  • Lajur dalam JSON yang tidak terdapat dalam jenis diabaikan.
  • Lajur yang kedua-duanya dalam jenis dan JSON, nilai JSON mesti dipaksa kepada jenis.

Fungsi ParseJSON boleh mengembalikan ralat jika teks itu tidak sah JSON mengikut format Notasi Objek JavaScript (JSON) yang diterangkan dalam ECMA-404 dan IETF RFC 8259.

Sintaks

ParseJSON(JSONString [, Jenis ] )

  • JSONString – Diperlukan. Struktur JSON mewakili sebagai teks.
  • Jenis - Pilihan. Takrifan Power Fx jenis untuk struktur JSON. Tanpa hujah ini, ParseJSON mengembalikan objek yang tidak ditaip; dengannya dan fungsi mengembalikan objek yang ditaip dengan kuat.

Menukar jenis data objek Tanpa Jenis

Tanpa hujah kedua, ParseJSON mengembalikan objek tidak ditaip yang memerlukan penukaran eksplisit nilai medan dalam jenis data yang disokong. Jadual berikut menyenaraikan jenis data dalam Power Apps dan jenis data JSON sepadan dan cara untuk menukarnya.

Jenis data Contoh JSON Description Penukaran contoh
Boolean { "bool": true } Boolean ialah jenis eksplisit dalam JSON dan boleh ditukar secara terus. Boolean( ParseJSON("{ ""bool"": true }").bool )
Warna { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Tiada jenis warna dalam JSON. Nilai warna boleh dicipta daripada integer RGBA atau rentetan perenambelas. 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 Wang, Nombor { "numbervalue": 123.5 } Nombor diwakili secara terus dalam JSON dengan noktah ( . ) sebagai pemisah perpuluhan. Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Tarikh, Tarikh/Masa, Masa { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON tidak mempunyai jenis tarikh atau masa jadi hanya boleh mewakili tarikh dan masa sebagai rentetan. Objek tanpa jenis boleh ditukar secara terus daripada rentetan dalam format ISO 8601 kepada tarikh, masa atau tarikhmasa. Untuk format lain, tukarkan medan JSON kepada teks dahulu menggunakan fungsi Teks() dan kemudian gunakan fungsi DateValue(), TimeValue() atau DateTimeValue() yang secara lalai akan menggunakan tetapan pengguna semasa. DateValue( ParseJSON(""{ "appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""5 Mei 2022""") }.appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON tidak mempunyai jenis data untuk GUIds jadi ia hanya boleh diwakili sebagai rentetan. GUID( ParseJSON("{ ""id"": """123e4567-e89b-12d3-a456-426655440000" }").id )
HiperPautan, Imej, Media { "URI": "https://northwindtraders.com/logo.jpg" } Jenis data ini ialah jenis data teks dan boleh ditukar kepada teks dan kemudian digunakan dalam Power Apps. Text( parseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI )
Pilihan { "status": 1 }
{ "status": "Closed" }
Pilihan dipaparkan sebagai rentetan disetempatkan, disokong oleh nombor. Fungsi JSON() mensirikan pilihan kepada nombor sokongannya. Tiada penukaran langsung daripada nombor atau rentetan kepada pilihan, tetapi fungsi Tukar() atau Jika() boleh digunakan pada nilai teks atau nombor. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Rekod { "field": "value" } Tiada penukaran langsung daripada objek JSON kepada struktur rekod, tetapi medan individu boleh didapatkan semula daripada objek tanpa jenis untuk membentuk rekod. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Rujukan Rekod t/b Rujukan rekod adalah unik untuk sumber data dan tidak boleh disirikan atau dinyahsiri. Nilai medan yang mewakili kunci unik boleh digunakan dalam JSON untuk mengenal pasti rekod yang kemudian boleh dicari. t/b
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON boleh mengandungi tatasusunan yang boleh ditukar kepada jadual. Nilai ini boleh jadi tatasusunan rekod atau tatasusunan nilai yang merupakan jadual lajur tunggal secara berkesan. ParseJSON() tatasusunan hanya boleh ditukar kepada jadual lajur tunggal objek yang tidak ditaip dan boleh digunakan sedemikian atau ditukar kepada jadual rekod yang ditaip menggunakan ForAll(). ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"", }" { id"": 2, "name"": "two""] } " ) ),id { : Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Teks { "stringField": "this is text" } Teks ialah jenis eksplisit dalam JSON dan boleh ditukar secara terus. Teks( ParseJSON( ""{ "stringField"": ""ini ialah teks""") }.stringField )
Dua pilihan { "available": true }
{ "available": "Yes" }
Dua pilihan dipaparkan sebagai rentetan disetempatkan, disokong oleh boolean. Fungsi JSON() mensirikan dua pilihan kepada nilai booleannya. Tiada penukaran langsung daripada boolean, nombor atau rentetan kepada dua pilihan, tetapi fungsi Tukar() atau Jika() boleh digunakan pada nilai teks, nombor atau boolean. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Contoh

Mengakses nilai medan

Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Formula berikut mengembalikan teks text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Formula berikut mengembalikan nombor 567:
    Value( ParseJSON( JsonString ).number )
    

Sekiranya nama medan terdiri daripada nama pengecam tidak sah, anda boleh meletakkan nama medan dalam sebut harga tunggal. Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString

{ "0": { "child-field": "text value" } }
  1. Formula berikut mengembalikan teks text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Kosong

Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Percubaan untuk mengakses medan tidak wujud mengembalikan Kosong(). Formula berikut mengembalikan true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. Nilai JSON null dianggap sebagai Kosong(). Formula berikut mengembalikan true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Tatasusunan Ringkas

Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString

{ "array": [1, 2, 3] }
  1. Mengakses nombor kedua dalam jadual lajur tunggal objek tanpa jenis medan tatasusunan dan menukar kepada nombor menggunakan Nilai() mengembalikan 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Menukar jadual lajur tunggal objek tanpa jenis dalam medan tatasusunan, kepada jadual lajur tunggal nombor { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Tatasusunan Rekod

Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Menukar jadual rekod yang ditaip secara terus dengan ForAll() boleh dilakukan dengan menggunakan ThisRecord.[fieldname] untuk mengakses medan objek tanpa jenis dan menukarnya kepada jenis yang diketahui:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

Tatasusunan kepada Jadual

  1. Penukaran objek tanpa jenis kepada jadual dengan menggunakan fungsi Jadual() menghasilkan jadual lajur tunggal objek tanpa jenis. Objek kemudian perlu diakses menggunakan lajur (tunggal) Value dan ditukar kepada jenis yang diterangkan sebelum ini.

Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString

{ "array": [1, 2, 3] }

Table() mengembalikan jadual lajur tunggal objek yang tidak ditaip dengan Nilai lajur tunggal untuk nombor dalam tatasusunan...

 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 jadual lajur tunggal objek tidak ditaip yang mewakili setiap objek json dalam tatasusunan.

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