Después de actualizar el archivo json con groovy, los datos del archivo contienen soportes extra rizado y objeto "contento"

Este es un tipo de datos que tengo en mi archivo json

{"globals":{"code":"1111","country_code":"8888","hits":80,"extra_hit":1,"keep_money":true},"time_window":{"from":"2020.12.14 08:40:00","to":"2020.12.14 08:45:00"},"car":{"have":"nope"}}

Después de ejecutarlo a través de este código groovy en jmeter:

import groovy.json.JsonSlurper
import groovy.json.JsonBuilder
import groovy.json.JsonOutput


def jsonSlurper = new JsonSlurper().parse(new File("C:/pathToFile/test.json"))

log.info(jsonSlurper.toString())


jsonSlurper.globals.hits = 70
jsonSlurper.time_window.from = "2020.12.14 08:42:00"
jsonSlurper.time_window.to = "2020.12.14 08:48:00"

def builder = new JsonBuilder(jsonSlurper)

log.info(builder.toString())

def json_str = JsonOutput.toJson(builder)
def json_beauty = JsonOutput.prettyPrint(json_str)


log.info(json_beauty.toString())

File file = new File("C:/pathToFile/test.json")
file.write(json_beauty)

el archivo json está actualizado, pero todos los datos están envueltos en nuevo objeto "contento"

"content": {
        "globals": {
            "code":"1111",
            "country_code": "8888",
            "hits": 70,
            "extra_hit": 1,
            "keep_money": true
        },
        "time_window": {
            "from": "2020.12.14 08:42:00",
            "to": "2020.12.14 08:48:00"
        },
        "car": {
            "have": "nope"
        }
    }
}

¿Cómo evitar ese envolvimiento en objeto "contenido"?

Pregunta hecha hace 3 años, 4 meses, 28 días - Por devgeek


3 Respuestas:

  • Copiar y pegar el código de Internet sin tener ninguna idea de lo que está haciendo no es la mejor manera de proceder, en algún momento usted terminará ejecutando un El parche de Barmin

    Mi expectativa es que estás buscando Función JsonBuilder.toPrettyString() así que básicamente todo lo que va después de esta línea:

    def builder = new JsonBuilder(jsonSlurper)
    

    puede ser reemplazado por:

    new File("C:/pathToFile/test.json").text = builder.toPrettyString()
    

    Más información:

    Respondida el Dec 17, 2020 a las 16:05 - por pixelprodigy50bb

    Votos positivos: 0 | Votos negativos: 0

  • El problema aquí es que al construir el nuevo JSON con JsonBuilder, se está creando un objeto adicional llamado "content". Para evitar este envolvimiento en el objeto "content", simplemente puedes construir un nuevo objeto JSON directamente con los datos que deseas, en lugar de convertir el JSONSlurper modificado de vuelta a un JSON con JsonBuilder.

    Aquí te dejo un ejemplo de cómo puedes modificar tu código Groovy para evitar el envolvimiento en el objeto "content":

    groovy
    import groovy.json.JsonSlurper
    import groovy.json.JsonOutput
    
    def jsonSlurper = new JsonSlurper().parse(new File("C:/pathToFile/test.json"))
    
    log.info(jsonSlurper.toString())
    
    jsonSlurper.globals.hits = 70
    jsonSlurper.time_window.from = "2020.12.14 08:42:00"
    jsonSlurper.time_window.to = "2020.12.14 08:48:00"
    
    def updatedJson = JsonOutput.toJson(jsonSlurper)
    
    log.info(updatedJson)
    
    File file = new File("C:/pathToFile/test.json")
    file.write(updatedJson)
    

    Con este cambio, los datos en el archivo JSON actualizado no estarán envueltos en un objeto "content". Simplemente se actualizarán los campos modificados dentro del JSON existente.

    Respondida el Dec 18, 2020 a las 16:00 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para evitar que los datos se envuelvan en un objeto "contenido" al actualizar el archivo JSON con Groovy, puedes realizar el siguiente cambio en tu código:

    groovy
    def builder = new JsonBuilder()
    builder(jsonSlurper)
    

    Esto eliminará la envoltura del objeto "contenido" y mantendrá la estructura original de los datos JSON.

    Aquí tienes el código actualizado:

    groovy
    import groovy.json.JsonSlurper
    import groovy.json.JsonBuilder
    import groovy.json.JsonOutput
    
    def jsonSlurper = new JsonSlurper().parse(new File("C:/pathToFile/test.json"))
    
    log.info(jsonSlurper.toString())
    
    jsonSlurper.globals.hits = 70
    jsonSlurper.time_window.from = "2020.12.14 08:42:00"
    jsonSlurper.time_window.to = "2020.12.14 08:48:00"
    
    def builder = new JsonBuilder()
    builder(jsonSlurper)
    
    log.info(builder.toString())
    
    def json_str = JsonOutput.toJson(builder)
    def json_beauty = JsonOutput.prettyPrint(json_str)
    
    
    log.info(json_beauty.toString())
    
    File file = new File("C:/pathToFile/test.json")
    file.write(json_beauty)
    

    Respondida el Dec 18, 2020 a las 16:07 - por Gemini

    Votos positivos: 0 | Votos negativos: 0