Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Applications Canevas
Copilot Studio
Basées sur des modèles , applications
Power Platform CLI
Dataverse fonctions
Power Pages
Interprète une chaîne JSON et retourne une valeur dynamique ou une valeur typée spécifique si un type est fourni.
Important
- L’utilisation du deuxième argument pour ParseJSON convertir en objet typé est une fonctionnalité expérimentale.
- Les fonctionnalités expérimentales ne sont pas destinées à une utilisation en production et peuvent être restreintes. Ces fonctionnalités sont disponibles avant une publication officielle afin que vous puissiez y accéder en avant-première et fournir des commentaires. En savoir plus : Comprendre les fonctionnalités expérimentales, en version préliminaire et retirées dans les applications canevas
- Le comportement décrit dans cet article n’est disponible que lorsque la fonctionnalité expérimentale Types définis par l’utilisateur dans Paramètres > Fonctionnalités à venir > Expérimental est activée (elle est désactivée par défaut).
- Vos commentaires nous sont très utiles. Donnez-nous votre avis sur le forum de la communauté des fonctionnalités expérimentales Power Apps.
Description
La ParseJSON fonction analyse une chaîne JSON valide et retourne une valeur dynamique représentant la structure JSON.
Vous pouvez également utiliser le deuxième argument pour convertir le JSON en objet typé qui peut être directement utilisé dans des formules Power Fx. Cela rend le résultat plus facile à consommer, car les conversions et les coercitions au point d’utilisation ne sont plus nécessaires. Le JSON sans type est mappé au type avec ces règles :
- Les colonnes du type qui ne sont pas présentes dans le JSON sont remplies d’espaces vides.
- Les colonnes du JSON qui ne sont pas présentes dans le type sont ignorées.
- Pour les colonnes qui sont à la fois dans le type et dans JSON, la valeur JSON doit être coercitive par rapport au type.
La ParseJSON fonction peut retourner des erreurs si le texte n’est pas valide JSON conformément au format JSON (JavaScript Object Notation) décrit dans ECMA-404 et IETF RFC 8259.
Syntaxe
ParseJSON( JSONString [ , Type ] )
- JSONString : Obligatoire. Structure JSON représentée sous forme de texte.
- Type : facultatif. Définition de type Power Fx pour la structure JSON. Sans cet argument, ParseJSON retourne une valeur dynamique ; avec elle, la fonction retourne une valeur typée spécifique.
Conversion de valeurs dynamiques
Sans le deuxième argument, ParseJSON retourne une valeur dynamique qui nécessite une conversion explicite de 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. | Boolean( 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( « { « "color" » : « "#102030" » } » ).color ) With( { uo : ( « { « "r" » : 255, « "g" » : 128, « "b" » : ParseJSON0, « "a" » : 0.5 } » ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.b ), Value( uo.a ) ) |
| Devise, Nombre | { "numbervalue": 123.5 } |
Les nombres sont représentés directement dans JSON avec un point ( . ) comme séparateur décimal. | Value( 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. Une valeur dynamique peut être directement convertie d’une chaîne au format ISO 8601 en date, heure ou datetime. 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(« { « "appointment" » : « "2022-05-10" » } »).appointment ) DateValue( Text( ParseJSON(« { « "appointment" » : « "5 mai 2022" » } »).appointment ) |
| 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. | Text( 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’existe aucune conversion directe d’un objet JSON vers une structure d’enregistrement, mais des champs individuels peuvent être récupérés de la valeur dynamique pour former un enregistrement. | { champ : Text( ParseJSON( « { « "field"" » : « "value" » } » ).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. ParseJSON() Les tableaux ne peuvent être convertis qu’en une seule table de colonnes de valeurs dynamiques 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. | Text( ParseJSON( « { « "stringField"" » : « "this is text" » } »).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( Boolean( ParseJSON( " { « "available" » : true } » ).available ), false, Availability.No, true, Availability.Yes ) |
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
nullJSON 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] }
- L’accès au deuxième nombre dans la table à colonne unique du champ tableau des valeurs dynamiques et la conversion en nombre à l’aide de Value() retourne
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Conversion de la table à colonne unique de valeurs dynamiques dans le champ de tableau, en une seule table de colonnes 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 d’enregistrements typée directement avec ForAll() peut être effectuée en utilisant
ThisRecord.[fieldname]pour accéder aux champs dynamiques et les convertir en types spécifiques :ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Du tableau à la table
- La conversion de valeurs dynamiques en table à l’aide de la fonction Table() entraîne une table à colonne unique de valeurs dynamiques . L’objet doit ensuite être accessible à l’aide de la colonne (unique)
Valueet ê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() retourne une table à colonne unique de valeurs dynamiques avec une valeur à colonne unique 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() retourne une table à colonne unique de valeurs dynamiques qui représente chaque objet json dans le tableau.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )