jueves, 31 de diciembre de 2015

Scala ... en ejemplos sencillos no. 7 [Mapas]

Los mapas o "hashmap" en lenguajes como Scala, Java, etc. son colecciones de objetos desordenados. Se compone de una "llave o identificador" y su correspondiente valor.

Mapa mapa = Mapa ()
Objeto obj= Objeto()
Integer valor= Integer()
mapa.put(obj,valor)

Podemos obtener algo como esto:
mapa: {"uno":1,"dos":2,"tres":3}
mapa:{"A":3223,"Z":4329,"W":4322,"ACF":434}

En Scala podemos crear un mapa escribiendo:
var mapa: Map[String,Int] = Map()

Un mapa vacío que puede ser llenado de la siguiente manera:
mapa += (objLlave -> valor)

Tenemos así:  Mapas.scala
object Mapas{
   def main(args: Array[String]): Unit ={
       var mapa: Map[String,Int] = Map()
       mapa += ("uno" -> 1)
       mapa += ("tres" -> 3)
       mapa += ("Clave" -> 456)
   }
}

Para recorrer el mapa creado:
mapa.keys.foreach{ k =>
     Console.println("Llave:"+k)
     Console.println("Valor:"+mapa(k))
}


sábado, 12 de diciembre de 2015

Groovy en ejemplos no.9: Leer un JSON

Usar archivos JSON para el intercambio de información entre aplicaciones se ha vuelto muy indispensable. Es una alternativa para sustituir el uso de archivos XML.

Un archivo JSON se compone de:
  • Una colección tipo diccionario con nombre y valor.
  • Un arreglo o lista ordenada.
Ejemplo. Un archivo JSON llamado "persona.json" puede tener una estructura similar a la siguiente:
{
   "persona": {
          "nombre": "Mariana",
           "edad": 32
   }
}

Donde "persona" es el nodo (objeto) principal. Los valores pueden ser de tipo boolean (true o false), númericos y cadenas.  También podemos definir arreglos (que inician y cierran con corchetes) como este:
{
   "persona": {
          "nombre": "Mariana",
           "edad": 32,
          "libros":[
           "El extraño caso de el perro en el ropero",
           "El error de llamarse Godofredo"
         ]
   }
}

Donde "libros" es el arreglo.

¿Cómo leer el archivo JSON?
  • Necesitamos crear un archivo json (que cumpla con la estructura adecuada), y que denominaremos como "persona.json"
  • Usar la librería groovy.json.JsonSlurper

leerJSON.groovy

import groovy.json.JsonSlurper
import java.io.File

static main(args) {
  def json=new JsonSlurper()
  def archivo=new File("persona.json")

  if(archivo.exists()){
    println "Archivo existe:${archivo.getAbsolutePath()}"
    def objeto=json.parse(archivo) 
    if(objeto !=null){
        if(objeto.persona.nombre == null && objeto.persona.nombre == null){
            println "Objetos nulos"
        }
        javax.swing.JOptionPane.showMessageDialog(null, "Nombre:"+objeto.persona.nombre+"\nEdad:"+objeto.persona.edad)
    }
  }

}


Para acceder a una propiedad del objeto es necesario definir su nombre, por ejemplo, si queremos obtener el "valor" de la propiedad "nombre" debemos acceder de este modo:  objeto.persona.nombre

Ejecutamos: groovy leerJSON.groovy

Y obtenemos:




Links
https://geekytheory.com/json-i-que-es-y-para-que-sirve-json/
http://www.json.org/json-es.html