Simple Log Service (SLS) propose des fonctions pour extraire et convertir des données structurées aux formats JSON, XML et Protobuf lors de la transformation des données.
Fonctions
|
Catégorie |
Fonction |
Description |
|
JSON |
Extrait ou calcule des valeurs à partir d'une expression JSON en utilisant la syntaxe JMESPath. |
|
|
Analyse une valeur pour la convertir en objet JSON. |
||
|
XML |
Convertit des données XML au format JSON. |
json_select
Extrait ou calcule des valeurs à partir d'une expression JSON en utilisant la syntaxe JMESPath.
-
Syntaxe
json_select(value, jmes, default=None, restrict=False) -
Paramètres
Paramètre
Type
Obligatoire
Description
value
String, JSON
Oui
Expression JSON ou champ source à partir duquel extraire les données.
jmes
String
Oui
Expression JMESPath spécifiant le champ à extraire.
default
String
Non
Valeur de secours renvoyée si le champ spécifié n'existe pas. Valeur par défaut : None (aucune valeur renvoyée).
restrict
Bool
Non
Active le mode restreint lorsque la valeur extraite n'est pas un JSON valide. Valeur par défaut : False.
-
False : ignore l'erreur et poursuit la transformation. Renvoie la valeur default.
-
True : signale une erreur, interrompt la transformation et rejette le journal.
-
-
Réponse
La valeur extraite.
-
Exemples
-
Exemple 1 : extraire la valeur de l'élément name depuis le champ content.
-
Journal brut
content: {"name": "xiaoming", "age": 10} -
Règle de transformation
e_set("json_filter",json_select(v("content"), "name")) -
Résultat
content: {"name": "xiaoming", "age": 10} json_filter: xiaoming
-
-
Exemple 2 : extraire toutes les valeurs de l'élément name depuis le champ content.
-
Journal brut
content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10} -
Règle de transformation
e_set("json_filter", json_select(v("content"), "name[*]")) -
Résultat
content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10} json_filter: ["xiaoming", "xiaowang", "xiaoli"]
-
-
Exemple 3 : extraire l'élément name3. S'il n'existe pas, renvoyer la valeur par défaut.
-
Journal brut
content: {"name": "xiaoming", "age": 10} -
Règle de transformation
e_set("json_filter", json_select(v("content"), "name3", default="None")) -
Résultat
content: {"name": "xiaoming", "age": 10} json_filter: None
-
-
Exemple 4 : extraire l'élément name-test (contenant un trait d'union) depuis le champ content.
-
Journal brut
content: {"name": {"name-test":"xiaoming"}, "age": 10} -
Règle de transformation
e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None)) -
Résultat
content: {"name": {"name-test":"xiaoming"}, "age": 10} json_filter: xiaoming
-
-
Exemple 5 : extraire l'élément name-test (contenant un trait d'union). S'il n'existe pas, aucun champ n'est renvoyé.
-
Journal brut
content: {"name": {"name.test":"xiaoming"}, "age": 10} -
Règle de transformation
e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None)) -
Résultat
content: {"name": {"name-test":"xiaoming"}, "age": 10}
-
-
json_parse
Analyse une valeur pour la convertir en objet JSON.
-
Syntaxe
json_parse(value, default=None, restrict=False) -
Paramètres
Paramètre
Type
Obligatoire
Description
value
String
Oui
Champ à analyser pour obtenir un objet JSON.
default
String
Non
Valeur de secours renvoyée si le champ n'existe pas. Valeur par défaut : None (aucune valeur renvoyée).
restrict
Bool
Non
Active le mode restreint lorsque la valeur n'est pas un JSON valide. Valeur par défaut : False.
-
False : ignore l'erreur et poursuit la transformation. Renvoie la valeur default.
-
True : signale une erreur, interrompt la transformation et rejette le journal.
-
-
Réponse
L'objet JSON analysé.
-
Exemples
-
Exemple 1 : analyser la valeur du champ content pour obtenir un objet JSON.
-
Journal brut
content: {"abc": 123, "xyz": "test" } -
Règle de transformation
e_set("json", json_parse(v("content"))) -
Résultat
content: {"abc": 123, "xyz": "test" } json: {"abc": 123, "xyz": "test"}
-
-
Exemple 2 : analyser le champ content. Si la valeur n'est pas un JSON valide, renvoyer la valeur par défaut.
-
Journal brut
content: this is not json -
Règle de transformation
e_set("json", json_parse(v("content"), default="FFF", restrict=False)) -
Résultat
content: this is not json json: FFF
-
-
xml_to_json
Convertit des données XML au format JSON.
-
Syntaxe
xml_to_json(source) -
Paramètres
Paramètre
Type
Obligatoire
Description
source
String
Oui
Champ XML à convertir.
-
Réponse
Les données JSON converties.
-
Exemples
-
Journal brut
str : <data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data> -
Règle de transformation
e_set("str_json",xml_to_json(v("str"))) -
Résultat
str:<data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data> str_json:{"data": {"country": [{"@name": "Liechtenstein", "rank": "1", "year": "2008", "gdppc": "141100", "neighbor": [{"@name": "Austria", "@direction": "E"}, {"@name": "Switzerland", "@direction": "W"}]}, {"@name": "Singapore", "rank": "4", "year": "2011", "gdppc": "59900", "neighbor": {"@name": "Malaysia", "@direction": "N"}}, {"@name": "Panama", "rank": "68", "year": "2011", "gdppc": "13600", "neighbor": [{"@name": "Costa Rica", "@direction": "W"}, {"@name": "Colombia", "@direction": "E"}]}]}}
-