ParseJSON işlevi

Şunlar için geçerlidir: Tuval uygulamaları Model yönetimli uygulamalar Power Pages Power Platform CLI

Bir JSON dizesini yorumlar ve türü belirsiz bir nesneyi döndürür.

Description

ParseJSON işlevi geçerli bir JSON dizesini ayrıştırır ve JSON yapısını temsil eden bir türü belirsiz bir nesneyidöndürür.

Metin, ECMA-404 ve IETF RFC 8259 içinde açıklanan JavaScript Nesne Gösterimi (JSON) formatına göre geçerli bir JSON değilse ParseJSON işlevi hatalar döndürebilir.

Sözdizimi

ParseJSON( JSONString )

  • JSONString – Gerekli. JSON yapısı metin olarak temsil edilir.

Türü belirsiz nesne veri türünü dönüştürme

ParseJSON, desteklenen veri türlerinde alan değerlerinin açıkça dönüştürülmesini gerektiren türü belirsiz bir nesne döndürür. Aşağıdaki tabloda Power Apps içinde veri türleri ve ilgili bir JSON veri türü ve bunların nasıl dönüştürüleceği listelenir.

Veri türü JSON örnekleri Tanım Örnek dönüştürme
Boolean { "bool": true } Boole, JSON içindeki açık bir türdür ve doğrudan dönüştürülebilir. Boolean( ParseJSON("{ ""bool"": true }").bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
JSON içinde renk türü yok. Renk değerleri RGBA tamsayılarından veya onaltılık dizelerden oluşturulabilir. ColorValue( ParseJSON( "{ ""color"": ""#102030""" }).color )
With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Değer( uo.r ), Değer( uo.g ), Değer( uo.b ), Değer( uo.a ) ) )
Para Birimi, Sayı { "numbervalue": 123.5 } Sayılar doğrudan JSON içinde ondalık ayırıcı olarak nokta ( . ) ile gösterilir. Value( ParseJSON("{ """numbervalue"": 123.5 }").numbervalue )
Tarih, Tarih Saat, Saat { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON'un bir tarih veya saat türü yoktur, bu nedenle tarih ve saatler yalnızca dizeler olarak gösterebilir. Türü belirsiz bir nesne doğrudan ISO 8601 biçimindeki bir dizeden tarih, saat veya tarih saatteki değerine dönüştürülebilir. Diğer işlevler için önce Text() işlevini kullanarak JSON alanını metne dönüştürün ve ardından varsayılan olarak geçerli kullanıcı ayarlarının dilini kullanacak olan DateValue(), TimeValue() veya DateTimeValue() işlevini kullanın. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10""" }).appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""5 Mayıs 2022""" }).appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON, GUId'ler için bir veri türüne sahip değil, bu nedenle yalnızca dize olarak gösterilebilir. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"") }.id )
HyperLink, Görüntü, Ortam { "URI": "https://northwindtraders.com/logo.jpg" } Bu veri türleri metin veri türleridir ve metne dönüştürülebilir ve ardından Power Apps uygulamasında kullanılabilir. Text( ParseJSON("{ ""URI"": "";https://northwindtraders.com/logo.jpg"" }"). URI )
Seçenek { "status": 1 }
{ "status": "Closed" }
Seçimler, bir sayıyla desteklenen yerelleştirilmiş dizeler olarak sunulur. JSON() işlevi bir seçimi destek numarasına seri hale getirir. Sayı veya dizeden bir seçeneğe doğrudan dönüştürme yoktur ancak Switch() veya If() işlevleri metin veya sayı değeri üzerinde kullanılabilir. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Kaydet { "field": "value" } Bir JSON nesnesinden kayıt yapısına doğrudan dönüşüm yoktur, ancak bir kayıt oluşturmak için türü belirsiz nesneden ayrı alanlar alınabilir. { field: Text( ParseJSON( "{ ""field"": ""value""" }).field ) }
Kayıt Başvurusu Yok Kayıt başvuruları, veri kaynaklarına özgüdür ve seri hale getirilemez veya seri halden geri alınamaz. Benzersiz anahtarları temsil eden alan değerleri daha sonra aranabilecek kayıtları tanımlamak için JSON'da kullanılabilir. Yok
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON, tablolara dönüştürülebilecek diziler içerebilir. Bu değerler kayıt dizileri veya etkin bir şekilde tek sütunlu tablolar olan değer dizileri olabilir. ParseJSON() dizileri yalnızca türlenmemiş nesnelerden oluşantek sütunlu bir tabloya dönüştürülebilir ve bu şekilde kullanılabilir veya ForAll() kullanılaraktürü belirtilmiş kayıt tablolarına dönüştürülebilir. ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""bir"", } { ""id"": 2, ""name"": ""iki"] } " ) ), { id: Değer(ThisRecord.Value.id), ad: Metin(ThisRecord.Value.name) } )
Metin { "stringField": "this is text" } Metin, JSON içindeki açık bir türdür ve doğrudan dönüştürülebilir. Text( ParseJSON( "{ ""stringField"": ""bu metin"") }.stringField )
İki seçenek { "available": true }
{ "available": "Yes" }
İki seçenek, bir boole ile desteklenen yerelleştirilmiş dizeler olarak sunulur. JSON() işlevi, kendi boole değerine iki seçenek sağlar. Boole, sayı veya dizeden iki seçeneğe doğrudan dönüştürme yoktur ancak Switch() veya If() işlevleri metin, sayı veya boole değeri üzerinde kullanılabilir. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Örnekler

Alan değerlerine erişme

JsonString adlı bir değişkende aşağıdaki JSON dizesi verildiğinde

{ "parent": { "child": "text value" }, "number": 567 }
  1. Şu formül text value metnini döndürür:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Şu formül 567 sayısını döndürür:
    Value( ParseJSON( JsonString ).number )
    

Bir alan adının geçersiz bir tanımlayıcı adından oluştuğu durumlarda, alan adlarını tek tırnak işaretleri içine koyabilirsiniz. JsonString adlı bir değişkende aşağıdaki JSON dizesi verildiğinde

{ "0": { "child-field": "text value" } }
  1. Şu formül text value metnini döndürür:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Boşluklar

JsonString adlı bir değişkende aşağıdaki JSON dizesi verildiğinde

{ "text": "text value" , "number": 567, "empty": null }
  1. Mevcut olmayan alanlara erişmeyi denemek Blank() döndürür. Aşağıdaki formül true değerini döndürür:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON nulldeğerleri Blank() olarak kabul edilir. Aşağıdaki formül true değerini döndürür:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Basit Diziler

JsonString adlı bir değişkende aşağıdaki JSON dizesi verildiğinde

{ "array": [1, 2, 3] }
  1. Dizi alanının türü belirsiz nesnenin tek sütunlu tablosundaki ikinci sayıya erişmek ve Value() kullanarak bir sayıya dönüştürmek 2 döndürür:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Dizi alanındaki türü belirsiz nesnenin tek sütunlu tablosunu, tek sütunlu bir sayı tablosuna dönüştürmek { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Kayıt Dizileri

JsonString adlı bir değişkende aşağıdaki JSON dizesi verildiğinde

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Kayıtların doğrudan ForAll() işleviyle türü belirli bir tabloya dönüştürülmesi için türü belirsiz nesne alanlarına erişmek üzere ThisRecord.[fieldname] kullanılması ve bu nesnelerin bilinen türlere dönüştürülmesi gerekir:

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

Diziden Tabloya

  1. Türü belirsiz nesne Table() işleviyle bir tabloya dönüştürüldüğünde, tek sütunlu bir türü belirsiz nesneler tablosu elde edilir. Bu durumda, bu nesneye Value (tek) sütunu kullanarak erişilebilir ve nesnenin daha önce açıklanan türlere dönüştürülmesi gerekir.

JsonString adlı bir değişkende aşağıdaki JSON dizesi verildiğinde

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

Table(), dizideki sayı için tek sütunlu bir Değer ile türlenmemiş nesnelerden oluşan tek sütunlu bir tablo döndürür...

 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(), dizideki her json nesnesini temsil eden türlenmemiş nesnelerden oluşan tek sütunlu bir tablo döndürür.

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