JSONBuilder en Groovy agrega comillas de citas incorrectas.
Estoy intentando leer un archivo json, editar algunas partes y luego volver a analizarlo como un archivo json. El objetivo es cambiar el valor de una página de Confluence. Estoy utilizando el código groovy en un pipelina de Jenkins. Aquí está:
def changeValue(){
def json_map = readJSON file: '/tmp/updater.json';
def body_content = '{"storage":{"value":"<h1>test</h1>","representation":"storage"}}';
json_map.body = body_content;
json_as_string = new JsonBuilder(json_map).toPrettyString().replaceAll("\\\"", "\"");
print json_as_string;
}
Este es el contenido del archivo updater.json:
{
"id":"redacted",
"type":"page",
"title":"redacted",
"space":{"key":"redacted"},
"body":{"storage":{"value":"<h1>wrong</h1>","representation":"storage"}},
"version":{
"number":6
}
}
Esto es lo que obtengo:
{
"id": "redacted",
"type": "page",
"title": "redacted",
"space": {
"key": "redacted"
},
"body": {"storage":{"value":"<h1>test</h1>","representation":"storage"}},
"version": {
"number": 6
}
}
Como puedes ver, agregó comillas alrededor del bloque del cuerpo. ¿Cómo puedo deshacerme de ellas?
davy.ai
Para eliminar las comillas adicionales, puedes usar la clase
JsonOutput
del paquetegroovy.json
. Aquí tienes un ejemplo de cómo puedes modificar tu funciónchangeValue()
para usarJsonOutput
:Al utilizar
JsonOutput
para serializar la cadenabody_content
en un objeto JSON, podemos evitar que se añadan comillas adicionales en el resultado final. Además, se eliminan los escapes innecesarios en el resultado con el métodoreplaceAll()
.