Kongsi melalui


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 }
  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 )