Partekatu bidez


ParseJSON funtzioa

Honako hauei aplikatzen zaie: Oihalezko aplikazioak Copilot Studio Ereduetan oinarritutako aplikazioak Power Platform CLI Dataverse funtzioak Power Pages

JSON kate bat interpretatzen du, eta Dynamic balio bat edo motatutako balio zehatz bat itzultzen du, mota bat ematen bada.

Garrantzitsua da

Deskribapenak

Funtzioak ParseJSON baliozko JSON kate bat analizatzen du eta JSON egitura adierazten duen Dynamic balioa itzultzen du.

Aukeran, erabili bigarren argumentua JSON Power Fx formuletan zuzenean erabil daitekeen idatzitako objektu bihurtzeko. Honek emaitza errazago kontsumitzen du, erabilera puntuan konbertsioak eta behartzeak ez baitira beharrezkoak. Idatzi gabeko JSON motara mapatzen da arau hauekin:

  • JSONan ez dauden motako zutabeak hutsikrekin betetzen dira.
  • Motan ez dauden JSON-ko zutabeei ez ikusi egiten zaie.
  • Bi motan eta JSON dauden zutabeetan, JSON balioak motari behartu egin behar dio.

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

Sintaxia

ParseJSON( JSONString [ , Mota ] )

  • JSONString – Beharrezkoa. JSON egitura testu gisa irudikatuta.
  • Mota - Aukerakoa. JSON egituraren Power Fx mota definizioa. Argumentu hau gabe, ParseJSON balio dinamiko bat itzultzen du; harekin batera, funtzioak balio zehatz bat itzultzen du.

Balio dinamikoak bihurtzea

Bigarren argumenturik gabe, Dynamic balioa itzultzen du, ParseJSON onartutako datu-motetako eremuen balioak esplizituki bihurtzea eskatzen duena. Hurrengo taulan datu motak Power Apps eta dagozkion JSON datu-mota zerrendatzen dira eta nola bihurtu.

Datu mota JSON adibideak Deskribapenak Adibidearen bihurketa
Boolear { "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. Balio dinamiko bat ISO 8601 formatuan dagoen kate batetik data, ordu edo data 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 ) )
GUID { "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"" }"). URIa )
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 JSON objektu batetik erregistro-egitura batera zuzeneko bihurketarik, baina eremu indibidualak berreskuratu daitezke Dynamic baliotik erregistro bat osatzeko. { 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 Dynamic balioen zutabe taula bakarrean bakarrik bihur daitezke, eta horrela erabil daitezke edo erregistroen taula tipokatuetan bihur daitezke ForAll() erabiliz. ForAll( Table( ParseJSON( "[ { "id""": 1, ""name""": "one"" }, { ""id""": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
Testu-mezua { "stringField": "this is text" } Testua JSON-n mota esplizitua da eta zuzenean bihur daiteke. Text( ParseJSON( "{ """stringField"": ""hau testua da"" }").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. Balio dinamikoen zutabe bakarreko matrize-eremuko bigarren zenbakira sartzean eta Value() erabiliz zenbaki bihurtzen bada, honako hau itzultzen 2da:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Matrize-eremuko zutabe bakarreko balio dinamikoen taula zutabe bakarreko zenbakien { Value: 1 }, { Value: 2 }, { Value: 3 }taula bihurtzea:
    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. ForAll() erregistroen taula motifikatu batera zuzenean bihurtzea eremu dinamikoetara atzitzeko eta mota zehatzetara bihurtzeko erabil ThisRecord.[fieldname] daiteke:

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

Matrizea taulara

  1. Balio dinamikoak taula bihurtzean Table() funtzioa erabiliz zutabe bakarreko balio dinamikoen taula sortzen da. 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()- k zutabe bakarreko taula bat itzultzen du balio dinamikoekin , matrizeko zenbakiaren zutabe bakarreko balioarekin...

 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() funtzioak zutabe bakarreko taula bat itzultzen du, matrizeko json objektu bakoitza irudikatzen duena.

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