Partekatu honen bidez:


ParseJSON funtzioa

Hauei aplikatzen zaie: Canvas aplikazioak Ereduetan oinarritutako aplikazioak Power Pages Power Platform CLI

JSON kate bat interpretatzen du eta idatzi gabeko objektua itzultzen du.

Deskribapenak

ParseJSON funtzioak baliozko JSON kate bat analizatuko du eta idatzi gabeko objektua JSON egitura adierazten duena itzuliko du.

ParseJSON funtzioak erroreak itzul ditzake testua JSON baliozkoa ez bada ECMA-404 eta deskribatutako JavaScript Object Notation (JSON) formatuaren arabera. IETF RFC 8259.

Sintaxia

ParseJSON( JSONString )

  • JSONString – Beharrezkoa. JSON egitura testu gisa irudikatuta.

Idatzi gabeko objektuaren datu mota bihurtzea

ParseJSON-ek idatzi gabeko objektua itzultzen du eta horrek eremu-balioen konbertsio esplizitua eskatzen du onartutako datu-motetan. Hurrengo taulan datu motak Power Apps eta dagozkion JSON datu-mota zerrendatzen dira eta nola bihurtu.

Datu mota JSON adibideak Deskribapenak Adibidearen bihurketa
Boolean { "bool": true } Boolearra JSON-n mota esplizitua da eta zuzenean bihur daiteke. Boolean( ParseJSON ("{ ""bool"": true }").bool )
Kolorea { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Ez dago kolore motarik JSON elementuan. Kolore-balioak RGBA zenbaki osoetatik edo hamaseitar kateetatik sor daitezke. 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 ) ) )
Moneta, zenbaki { "numbervalue": 123.5 } Zenbakiak JSON-n zuzenean adierazten dira puntu bat ( . ) bereizle hamartar gisa. Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
Data, DateTime, denbora { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSONek ez du data edo ordu motarik, beraz, datak eta orduak kate gisa soilik irudika ditzake. Idatzi gabeko objektu bat zuzenean ISO 8601 formatuan dagoen kate batetik data, ordua edo data-ordu batera bihur daiteke. Beste formatuak JSON eremua testu bihurtu behar dira Text() funtzioa erabiliz eta ondoren DateValue(), TimeValue() edo DateTimeValue() funtzioa lehenespenez uneko erabiltzailearen ezarpenen hizkuntza erabiliko du. DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) )
GUIDa { "id": "123e4567-e89b-12d3-a456-426655440000" } JSONek ez du datu motarik GUIdetarako, beraz, kate gisa soilik irudikatu daitezke. GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
HyperLink, Irudia, Media { "URI": "https://northwindtraders.com/logo.jpg" } Datu-mota hauek testu-datu motak dira, eta testu bihurtu eta gero Power Apps erabil daitezke. Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Aukera { "status": 1 }
{ "status": "Closed" }
Aukerak kate lokalizatu gisa aurkezten dira, zenbaki batean oinarrituta. JSON() funtzioak bere babeskopuruaren aukera bat serializatzen du. Ez dago zuzeneko bihurketa zenbakitik edo katetik aukera batera, baina Switch() edo If() funtzioak testu- edo zenbaki-balioan erabil daiteke. Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
Grabatu { "field": "value" } Ez dago bihurketa zuzena idatzi gabeko JSON objektua erregistratzeko egitura, baina indibidualak eremuak berreskura daitezke idatzi gabeko objektua sortzeko inprimaki berria. { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) }
Erregistroaren erreferentzia e/e Erregistro-erreferentziak datu-iturburuetarako bakarrak dira eta ezin dira serializatu edo serializatu gabe. Gako esklusiboak adierazten dituzten eremu-balioak JSON-en erabil litezke gero bilatu daitezkeen erregistroak identifikatzeko. e/e
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSONek matrizeak izan ditzake, eta horiek taula bihurtu daitezke. Balio hauek erregistro-matrizeak izan daitezke, edo zutabe bakarreko taulak diren balio-matrizeak. ParseJSON() matrizeak idatzi gabeko objektuen zutabe bakarreko taula batean soilik bihur daitezke, eta honela erabil daitezke edo idatzitako tauletan bihur daitezke. erregistroak ForAll() erabiliz. ForAll( Taula( ParseJSON( "[ { ""id"": 1, ""izena"": ""bat"" }, { " "id"": 2, ""izena"": ""bi"" } ]" ) ), { id: Balioa (ThisRecord.Value.id), izena: Testua (ThisRecord.Value.name) } )
Testu-mezua { "stringField": "this is text" } Testua JSON-n mota esplizitua da eta zuzenean bihur daiteke. Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField )
Bi aukera { "available": true }
{ "available": "Yes" }
Bi aukerak kate lokalizatu gisa aurkezten dira, balio boolear baten oinarrituta. JSON() funtzioak bi aukera serializatzen ditu bere balio boolearra. Ez dago zuzeneko bihurketa zenbaki boolearrik edo katetik bi aukera batera, baina Switch() edo If() funtzioak testua edo zenbakia edo balio boolearra erabil daiteke. Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes )

Adibideak

Eremuen balioak atzitzea

JsonStringizeneko aldagai batean JSON kate hau emanda

{ "parent": { "child": "text value" }, "number": 567 }
  1. text value testua itzultzen du honako formula honek:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. 567 zenbakia itzultzen du honako formula honek:
    Value( ParseJSON( JsonString ).number )
    

Eremu-izenak identifikatzaile-izen baliogabe batez osatuta badago, eremu-izenak komatxo bakarrean jar ditzakezu. JsonStringizeneko aldagai batean JSON kate hau emanda

{ "0": { "child-field": "text value" } }
  1. text value testua itzultzen du honako formula honek:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Hutsik dauden balioak

JsonStringizeneko aldagai batean JSON kate hau emanda

{ "text": "text value" , "number": 567, "empty": null }
  1. Existitzen ez diren eremuetara sartzen saiatzeak Blank() itzultzen du. true itzultzen du honako formula honek:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null balioak Blank() hartzen dira. true itzultzen du honako formula honek:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Matrize sinpleak

JsonStringizeneko aldagai batean JSON kate hau emanda

{ "array": [1, 2, 3] }
  1. Matrize-eremuaren bigarren zenbakia atzitzen baduzu motarik gabeko objektuaren zutabe bakarreko taula batean eta zenbaki bihurtzen baduzu Value() erabiliz, 2 itzultzen du:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Array eremuko idatzi gabeko objektuaren zutabe bakarreko taula bihurtzea, zenbakien zutabe bakarreko taula { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Erregistroen matrizeak

JsonStringizeneko aldagai batean JSON kate hau emanda

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Erregistroen motadun taula bat bihurtzen baduzu zuzenean ForAll() funtzioarekin, ThisRecord.[fieldname] erabil dezakezu motarik gabeko objektua atzitzeko eta balioak mota ezagun bihurtzeko:

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

Matrizea taulara

  1. Idatzi gabeko objektua bihurtzea taula batean zuzenean sar daiteke, edo Taula() funtzioaren emaitzak erabiliz gero idatzi gabeko objektua zutabe-taula. Ondoren, objektura Value zutabe (bakarra) erabiliz atzitu behar da eta aurretik azaldu bezala motatara bihurtu.

JsonStringizeneko aldagai batean JSON kate hau emanda

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

Table()zutabe bakarreko taula bat itzultzen du motarik gabeko objektuen matrizeko zenbakiaren zutabe bakarreko balioa duten...

 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() itzultzen du motarik gabeko objektuen zutabe bakarreko taula bat matrizeko JSON objektu bakoitza adierazten duena.

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