Groovy Script pour lire une valeur particulière

Je peux récupérer la valeur d'une charge utile JSON particulière via le script ci-dessous. S'il y a plusieurs champs 'id', je veux extraire la valeur commençant par "asset:". Aidez-moi, s'il vous plaît.

Supposons que les champs suivants arrivent et que je souhaite récupérer la valeur commençant par "asset :" (ordres aléatoires)

"id":"Batch:6166a7e352faff0007dfa7dc",
"id":"assetTypeID:6166a7e352faff0007dfa7dc",
"id":"assetType:6166a7e352faff0007dfa7dc",
"id":"asset:6166a7e352faff0007dfa7dc",

Code existant : (à utiliser pour récupérer la première valeur d'identifiant)

import groovy.json.JsonSlurper;
def Message processData(Message message)
{
def body = message.getBody(String);
def map = new JsonSlurper();
def object = map.parseText(body)
def id = object.data.id[0].toString()
message.setHeader("id",id )
return message
}


Solution du problème

def data = [ "id":"Batch:6166a7e352faff0007dfa7dc", "id":"assetTypeID:6166a7e352faff0007dfa7dc", "id":"assetType:6166a7e352faff0007dfa7dc", "id":"asset:6166a7e352faff0007dfa7dc", ]
def id = data.findResult{ k, v -> v.startsWith( 'asset:' )? v: null }
assert id == 'asset:6166a7e352faff0007dfa7dc'

Commentaires

Posts les plus consultés de ce blog

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables