Fungsi ParseJSON
Digunakan untuk: Aplikasi kanvas Aplikasi dipacu Power Pages Power Platform model CLI
Mentafsir rentetan JSON dan mengembalikan objek tanpa jenis.
Description
Fungsi ParseJSON function akan menghuraikan rentetan JSON yang sah dan mengembalikan objek tanpa jenis yang mewakili struktur JSON.
Fungsi ParseJSON mungkin mengembalikan ralat jika teks tidak sah JSON mengikut format Notasi Objek JavaScript (JSON) yang diterangkan dalam ECMA-404 dan IETF RFC 8259.
Sintaks
ParseJSON( JSONString )
- JSONString – Diperlukan. Struktur JSON mewakili sebagai teks.
Menukar jenis data objek Tanpa Jenis
ParseJSON mengembalikan objek tanpa jenis 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 }
- Formula berikut mengembalikan teks
text value
:Text( ParseJSON( JsonString ).parent.child )
- 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" } }
- 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 }
- Percubaan untuk mengakses medan tidak wujud mengembalikan Kosong(). Formula berikut mengembalikan
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- Nilai JSON
null
dianggap sebagai Kosong(). Formula berikut mengembalikantrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Tatasusunan Ringkas
Memandangkan rentetan JSON berikut dalam pemboleh ubah yang dinamakan JsonString
{ "array": [1, 2, 3] }
- 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 ) )
- 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"}
] }
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
- 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 )