En este módulo, aprenderemos cómo trabajar con XML y JSON en Groovy. Estos formatos de datos son ampliamente utilizados para la transferencia de datos entre sistemas y aplicaciones. Groovy proporciona una serie de herramientas y bibliotecas que facilitan la manipulación de estos formatos.

Contenido

Introducción a XML y JSON

¿Qué es XML?

XML (eXtensible Markup Language) es un formato de texto utilizado para almacenar y transportar datos. Es legible tanto por humanos como por máquinas y se utiliza ampliamente en servicios web y configuraciones de aplicaciones.

¿Qué es JSON?

JSON (JavaScript Object Notation) es un formato de texto ligero para el intercambio de datos. Es fácil de leer y escribir para los humanos y fácil de analizar y generar para las máquinas. JSON se utiliza comúnmente en aplicaciones web para enviar y recibir datos.

Manipulación de XML en Groovy

Groovy proporciona varias formas de trabajar con XML, incluyendo XmlParser, XmlSlurper y MarkupBuilder.

Lectura de XML con XmlParser

def xml = '''
<books>
    <book id="1">
        <title>Groovy in Action</title>
        <author>Dierk Koenig</author>
    </book>
    <book id="2">
        <title>Programming Groovy 2</title>
        <author>Venkat Subramaniam</author>
    </book>
</books>
'''

def parser = new XmlParser()
def books = parser.parseText(xml)

books.book.each { book ->
    println "Title: ${book.title.text()}, Author: ${book.author.text()}"
}

Lectura de XML con XmlSlurper

def xml = '''
<books>
    <book id="1">
        <title>Groovy in Action</title>
        <author>Dierk Koenig</author>
    </book>
    <book id="2">
        <title>Programming Groovy 2</title>
        <author>Venkat Subramaniam</author>
    </book>
</books>
'''

def slurper = new XmlSlurper()
def books = slurper.parseText(xml)

books.book.each { book ->
    println "Title: ${book.title}, Author: ${book.author}"
}

Creación de XML con MarkupBuilder

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def xml = new MarkupBuilder(writer)

xml.books {
    book(id: 1) {
        title 'Groovy in Action'
        author 'Dierk Koenig'
    }
    book(id: 2) {
        title 'Programming Groovy 2'
        author 'Venkat Subramaniam'
    }
}

println writer.toString()

Manipulación de JSON en Groovy

Groovy facilita el trabajo con JSON a través de la clase JsonSlurper para la lectura y JsonOutput para la escritura.

Lectura de JSON con JsonSlurper

import groovy.json.JsonSlurper

def json = '''
{
    "books": [
        {
            "id": 1,
            "title": "Groovy in Action",
            "author": "Dierk Koenig"
        },
        {
            "id": 2,
            "title": "Programming Groovy 2",
            "author": "Venkat Subramaniam"
        }
    ]
}
'''

def slurper = new JsonSlurper()
def books = slurper.parseText(json)

books.books.each { book ->
    println "Title: ${book.title}, Author: ${book.author}"
}

Creación de JSON con JsonOutput

import groovy.json.JsonOutput

def books = [
    [id: 1, title: 'Groovy in Action', author: 'Dierk Koenig'],
    [id: 2, title: 'Programming Groovy 2', author: 'Venkat Subramaniam']
]

def json = JsonOutput.toJson([books: books])
println JsonOutput.prettyPrint(json)

Ejercicios Prácticos

Ejercicio 1: Leer y Modificar XML

  1. Dado el siguiente XML, lee los datos y agrega un nuevo libro al final de la lista.
<books>
    <book id="1">
        <title>Groovy in Action</title>
        <author>Dierk Koenig</author>
    </book>
    <book id="2">
        <title>Programming Groovy 2</title>
        <author>Venkat Subramaniam</author>
    </book>
</books>

Solución:

def xml = '''
<books>
    <book id="1">
        <title>Groovy in Action</title>
        <author>Dierk Koenig</author>
    </book>
    <book id="2">
        <title>Programming Groovy 2</title>
        <author>Venkat Subramaniam</author>
    </book>
</books>
'''

def parser = new XmlParser()
def books = parser.parseText(xml)

def newBook = new Node(books, 'book', [id: '3'])
new Node(newBook, 'title', 'Learning Groovy')
new Node(newBook, 'author', 'Adam L. Davis')

println groovy.xml.XmlUtil.serialize(books)

Ejercicio 2: Leer y Modificar JSON

  1. Dado el siguiente JSON, lee los datos y agrega un nuevo libro al final de la lista.
{
    "books": [
        {
            "id": 1,
            "title": "Groovy in Action",
            "author": "Dierk Koenig"
        },
        {
            "id": 2,
            "title": "Programming Groovy 2",
            "author": "Venkat Subramaniam"
        }
    ]
}

Solución:

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

def json = '''
{
    "books": [
        {
            "id": 1,
            "title": "Groovy in Action",
            "author": "Dierk Koenig"
        },
        {
            "id": 2,
            "title": "Programming Groovy 2",
            "author": "Venkat Subramaniam"
        }
    ]
}
'''

def slurper = new JsonSlurper()
def books = slurper.parseText(json)

books.books << [id: 3, title: 'Learning Groovy', author: 'Adam L. Davis']

def updatedJson = JsonOutput.toJson(books)
println JsonOutput.prettyPrint(updatedJson)

Conclusión

En esta sección, hemos aprendido cómo trabajar con XML y JSON en Groovy. Hemos cubierto cómo leer y escribir estos formatos de datos utilizando las herramientas proporcionadas por Groovy. Estos conocimientos son esenciales para cualquier desarrollador que trabaje con aplicaciones que requieran la manipulación de datos en estos formatos.

En el próximo módulo, exploraremos cómo acceder a bases de datos utilizando Groovy, lo que nos permitirá interactuar con sistemas de almacenamiento de datos de manera eficiente.

© Copyright 2024. Todos los derechos reservados