Y a-t-il un moyen simple de remplacer la version de " J'ai essayé ci-dessous, mais avoir une erreur; p> problème: strong>
Seule la première version Conf est remplacée
par exemple.
{
"Version": "2.6.5",
"Conf": "Réplique"
},
{
"Version": "1.0.2",
"Conf": "HP"
},
{
"Version": "1.0.2",
"Conf": "arrêt"
},
{
"Version": "1.0.2",
"Conf": "Spark"
} p> p>
3 Réponses :
Utilisation ou awk, si vous devez: p> Certaines sorties: < / p> JQ code>:
J'aime suggérer édité: strong> Voir la ligne groovy code> pour le faire.
// modifiée p> p>
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
def content = """
{
"app": "Beach",
"Process": "steam",
"versions": [
{
"version": "1.0.2",
"conf": "replian"
},
{
"version": "1.0.2",
"conf": "hp"
},
{
"version": "1.0.2",
"conf": "shutoff"
},
{
"version": "1.0.2",
"conf": "spark"
}
]
}"""
def slurped = new JsonSlurper().parseText(content)
def builder = new JsonBuilder(slurped)
builder.content.versions.find{it.version}.version = "2.6.5" // Edited Line
println(builder.toPrettyString())
// Updated Line
new File ("out.json").text = builder.toPrettyString()
groovy.json.jsonception: attendre un "," ou un "]", mais a obtenu le caractère actuel de ":" avec une valeur INT de 58 sur l'index de la matrice de 16, la lecture du personnage actuel est ":" avec une valeur INT de 58 Attendre A ',' ou A ']', mais obtenu le caractère actuel de ':' avec une valeur INT de 58 sur l'indice de réseau de 16 numéro de ligne 67 Numéro d'indice 1524 "Version": "0.0.0", .. ................ ^ à groovy.json.internal.jsonparserchaararray.complain (Jsonparser Chararray.java:153)
@itgeek Oops ...! Mon erreur. Maintenant j'ai mis à jour mon code
Merci Bhanu, la valeur remplaçait la première configuration "RÉPLIAN" et n'a pas remplacé la version dans une autre configuration
@itgeek heureux ça a aidé
Je veux les écrire dans un fichier JSON après avoir substitué les valeurs. Puis-je utiliser ci-dessous pour écrire les données analysées dans un fichier JSON et imprimer le contenu du fichier. Fichier de file: 'OutputFile.json', Texte: Content printLN ('Impression du fichier JSON de sortie:' + de sortiefile.json)
@itgeek Si vous voulez en sortie, vous pouvez ajouter une nouvelle ligne, car j'ai mis à jour la dernière ligne de ma réponse.
Si jamais vous êtes intéressé par une solution avec SED: SED 'S / "Version": "1 \ .0 \ .2" / "Version": "2.6.5" / Déployer.json < / code> p>
Dupliqué possible de modifier JSON avec JSONBuilder à Groovy