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
Enregistrer un commentaire