Fonction ParseJSON
S’applique à : Applications canevas Applications pilotées par modèle Power Pages Power Platform CLI
Interprète une chaîne JSON et renvoie un objet sans type.
Description
La fonction ParseJSON analyse une chaîne JSON valide et renvoit un objet sans type représentant la structure JSON.
La fonction ParseJSON peut renvoyer des erreurs si le texte n’est pas un JSON valide selon le format JavaScript Object Notation (JSON) décrit dans ECMA-404 et IETF RFC 8259.
Syntaxe
ParseJSON( JSONString )
- JSONString – Obligatoire. Structure JSON représentée sous forme de texte.
Conversion du type de données d’objet sans type
ParseJSON renvoie un objet sans type qui nécessite une conversion explicite des valeurs de champ dans les types de données pris en charge. La table suivante répertorie les types de données dans Power Apps et un type de données JSON correspondant et comment le convertir.
Type de données | Exemples JSON | Description | Exemple de conversion |
---|---|---|---|
Entier | { "bool": true } |
Boolean est un type explicite dans JSON et peut être directement converti. | booléen( ParseJSON("{ ""bool"" : true }").bool ) |
Color | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
Il n’y a pas de type de couleur dans JSON. Les valeurs de couleur peuvent être créées à partir d’entiers RGBA ou de chaînes hexadécimales. | ColorValue( ParseJSON( "{ ""couleur"" : ""#102030"" }" ).color ) Avec( { uo : ParseJSON( "{ ""r"" : 255, ""g"" : 128, ""b"" : 0, ""a"" : 0.5 }" ) }, RGBA( Valeur( uo.r ), Valeur( uo.g ), Valeur( uo.b ), Valeur( uo.a ) ) ) |
Devise, Nombre | { "numbervalue": 123.5 } |
Les nombres sont représentés directement dans JSON avec un point ( . ) comme séparateur décimal. | Valeur( ParseJSON("{ ""numbervalue"" : 123.5 }").numbervalue ) |
Date, DateHeure, Heure | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON n’a pas de type de date ou d’heure et ne peut donc représenter que des dates et des heures sous forme de chaînes. Un objet sans type peut être directement converti depuis une chaîne au format ISO 8601 en une date, une heure ou une date/heure. Pour les autres formats, convertissez d’abord le champ JSON en texte à l’aide de la fonction Text(), puis utilisez la fonction DateValue(), TimeValue() ou DateTimeValue() qui utilise par défaut la langue des paramètres de l’utilisateur actuel. | DateValue( ParseJSON("{ ""rendez-vous"" : ""2022-05-10"" }").rendez-vous ) DateValue( Texte( ParseJSON("{ ""rendez-vous"" : ""5 mai 2022"" }").rendez-vous ) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON n’a pas de type de données pour les GUID, ils ne peuvent donc être représentés que sous forme de chaînes. | GUID( ParseJSON("{ ""id"" : ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
Lien hypertexte, image, média | { "URI": "https://northwindtraders.com/logo.jpg" } |
Ces types de données sont des types de données texte et peuvent être convertis en texte, puis utilisés dans Power Apps. | Texte( ParseJSON("{ ""URI"" : ""https://northwindtraders.com/logo.jpg"" }").URI ) |
Option | { "status": 1 } { "status": "Closed" } |
Les choix sont présentés sous forme de chaînes localisées, soutenues par un nombre. La fonction JSON() sérialise un choix en numéro de sauvegarde. Il n’y a pas de conversion directe d’un nombre ou d’une chaîne vers un choix, mais les fonctions Switch() ou If() peuvent être utilisées sur le texte ou la valeur numérique. | Switch( Value( ParseJSON( "{ ""status"" : 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
Enregistrer | { "field": "value" } |
Il n’y a pas de conversion directe d’un objet JSON en une structure d’enregistrement, mais des champs individuels peuvent être récupérés à partir de l’objet sans type pour constituer un enregistrement. | { champ : Texte( ParseJSON( "{ ""champ"" : ""valeur"" }" ).field ) } |
Référence d’enregistrement | n/d | Les références d’enregistrement sont uniques aux sources de données et ne peuvent pas être sérialisées ou non sérialisées. Les valeurs de champ qui représentent des clés uniques peuvent être utilisées dans JSON pour identifier les enregistrements qui peuvent ensuite être recherchés. | n/d |
Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON peut contenir des tableaux, qui peuvent être convertis en tables. Ces valeurs peuvent être des tableaux d’enregistrements ou des tableaux de valeurs qui sont en fait des tables à une seule colonne. Les tableaux ParseJSON() ne peuvent être convertis qu’en une table à une seule colonne d’ objets non typés, et peuvent être utilisés comme tels ou convertis en tables typées d’enregistrements à l’aide de ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"" : 1, ""name"" : ""one"" }, { ""id"" : 2, ""name"" : ""two"" } ]" ) ), { id : Value(ThisRecord.Value.id), name : Text(ThisRecord.Value.name) } ) |
Text | { "stringField": "this is text" } |
Text est un type explicite dans JSON et peut être directement converti. | Texte( ParseJSON( "{ ""stringField"" : ""ceci est du texte"" }").stringField ) |
Deux options | { "available": true } { "available": "Yes" } |
Deux options sont présentées sous forme de chaînes localisées, soutenues par une valeur booléenne. La fonction JSON() sérialise deux options en sa valeur booléenne. Il n’y a pas de conversion directe d’une valeur booléenne, d’un nombre ou d’une chaîne vers deux options, mais les fonctions Switch() ou If() peuvent être utilisées sur le texte, le nombre ou la valeur booléenne. | Switch( booléen( ParseJSON( "{ ""disponible"" : true }" ).available ), false, Availability.No, true, Disponibilité.Oui ) |
Examples
Accéder aux valeurs de champ
Étant donné la chaîne JSON suivante dans une variable nommée JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- La formule suivante renvoie le texte
text value
:Text( ParseJSON( JsonString ).parent.child )
- La formule suivante renvoie le nombre
567
:Value( ParseJSON( JsonString ).number )
Si un nom de champ se compose d’un nom d’identifiant invalide, vous pouvez mettre les noms de champ entre guillemets simples.
Étant donné la chaîne JSON suivante dans une variable nommée JsonString
{ "0": { "child-field": "text value" } }
- La formule suivante renvoie le texte
text value
:Text( ParseJSON( JsonString ).'0'.'child-field' )
Vide
Étant donné la chaîne JSON suivante dans une variable nommée JsonString
{ "text": "text value" , "number": 567, "empty": null }
- Essayer d’accéder à des champs inexistants renvoie Blank(). La formule suivante renvoie
true
:IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- Les valeurs
null
JSON sont considérées comme Blank(). La formule suivante renvoietrue
:IsBlank( Text( ParseJSON( JsonString ).empty ) )
Tableaux simples
Étant donné la chaîne JSON suivante dans une variable nommée JsonString
{ "array": [1, 2, 3] }
- Accéder au deuxième nombre dans la table à une seule colonne du champ tableau de l’ objet sans type et convertir en un nombre en utilisant Value() renvoie
2
:Value( Index( ParseJSON( JsonString ).array, 2 ) )
- Conversion de la table à colonne unique de l’ objet sans type dans le champ tableau, à une table à colonne unique de nombres
{ Value: 1 }, { Value: 2 }, { Value: 3 }
:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
Tableaux d’enregistrements
Étant donné la chaîne JSON suivante dans une variable nommée JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
La conversion en une table typée d’enregistrements directement avec ForAll() peut être faite en utilisant
ThisRecord.[fieldname]
pour accéder aux champs objet sans type et convertissez-les en types connus :ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Du tableau à la table
- La conversion de l’objet sans type en une table à la fonction Table() entraîne une table à colonne unique d’objets sans type. L’objet doit ensuite être accessible à l’aide de la colonne (unique)
Value
et être converti en types comme expliqué précédemment.
Étant donné la chaîne JSON suivante dans une variable nommée JsonString
{ "array": [1, 2, 3] }
Table() renvoie un tableau à une seule colonne d’ objets non typés avec une valeur à une seule colonne pour le nombre dans le tableau...
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() renvoie un tableau à une seule colonne d’ objets non typés qui représente chaque objet json dans le tableau.
Set(untypedTable, Table( ParseJSON( JsonString ).array );
Text( Index(untypedTable, 1).Value.name )