Ejemplo # 1: Analización de JSON con Circe en Scala en Ubuntu 20.04
El paquete Circe Scala facilita trabajar con JSON al facilitar la decodificación de las cadenas JSON en objetos Scala o convertir objetos Scala a JSON. Necesitamos menos líneas de código para interactuar con JSON en Scala y gracias a la generación automática de codificadores y decodificadores de objetos de la biblioteca.
En este caso, hemos importado el paquete Circe y el DerivedEcoder, que nos permite analizar una cadena JSON dependiendo de la clase de caso "animal". La clase de casos representa el objeto "readjson", y el objeto se llama la definición principal. Hemos definido la variable "json_value", que se inicializa con los datos del formato JSON. La función del decodificador implícito, DerivedEcoder, de la clase de casos de Circe es lo que necesitamos proporcionar en este ejemplo. El error ocurrirá si no ofrecemos lo implícito. Bajo el capó, la implementación del analizador.Decode llamó a la clase "animal" y se asignó el parámetro "json_value". Luego, tenemos un identificador coincidente que devolverá uno de los dos casos.
Hemos decodificado los datos JSON en el Scala utilizando el paquete Circe Scala de la siguiente manera:
Ejemplo # 2: Poner la matriz JSON en Scala en Ubuntu 20.04
Se puede usar una matriz para comenzar JSON. Así que usemos Circe para intentar analizar eso.
Se parece al código anterior en apariencia. Primero, hemos importado dos paquetes Circe. Luego, hemos definido la clase de caso "frutas", y contiene un parámetro, "f_name". Hemos establecido el "ReadArray" para la definición del método principal. Luego, declaramos la variable "inputJson" para representar los datos de JSON. Sin embargo, es posible que hayas notado algunas cosas. Solo se debe crear el decodificador de frutas de clase de casos. List [Fruits] no requiere que se cree un decodificador. Esto es para que Circe pueda decodificar convenientemente la lista [a].
Un tipo genérico está indicado por la lista [a] de cualquier tipo. Circe codifica y decodifica cada tipo por separado. La variable "resultado" coincide con el caso, que devolverá el caso correcto sobre el éxito de analizar JSON a Scala o el caso izquierdo en la falla.
Ejemplo # 3: Poner la cadena JSON en Scala en Ubuntu 20.04
El paquete Circe-Core contiene el objeto cursor, disponible en tres formas diferentes: cursor, hcursor y acursor. Con esto, los datos pueden extraerse o modificarse dentro de la estructura JSON. Decodificaremos en el siguiente ejemplo utilizando un tipo de datos algebraicos. Puede compararlo con la enumeración si no está familiarizado con él.
Con la importación de los paquetes Scala Circe, hemos comenzado la implementación del código. Hemos definido tres clases de casos, "fútbol", "hockey" y "tenis", que se extienden con el objeto "nivel". Además, hemos generado la clase de caso "error" para el manejo de excepciones. Luego, hemos representado el objeto "nivel". Hemos utilizado la palabra clave "o", que toma el nivel y el error dentro de ella. El "cualquiera de los dos" tiene dos hijos, derecha e izquierda, que se llaman con la declaración del caso. El caso correcto se ejecutará en el éxito, y el caso izquierdo se ejecutará en la falla.
Hemos establecido otro objeto como un "decodificador" para la implementación del código primario. Aquí, hemos creado una variable "JSON" y asignamos los datos JSON, que contienen tres cadenas. La variable implícita se define como "RatingDecoder", que se llama objeto "decodificador" y le pasa el [error, nivel]. Hemos invocado el objeto del cursor "HCURSOR" que modificará la estructura JSON. Bajo la implementación de la función de análisis, hemos analizado los datos JSON. El JSON se analizará y se generará en Scala cuando coincida con las declaraciones de caso especificadas.
Puede ver que el decodificador [ya sea [error, nivel]] parece satisfacer todos los requisitos. El código anterior, cuando se ejecuta, produce los resultados esperados.
Ejemplo # 4: Analización de JSON con Lift-Json Library en Scala en Ubuntu 20.04
Use una combinación de las técnicas de la Biblioteca Lift-Json. El ejemplo que sigue demuestra cómo deserializar la cadena jsonstrucción en muchos objetos mientras se muestra cada objeto, ya que está deserializado de la siguiente manera:
Después de eso, definimos una clase "Empleado de cuenta". La clase de casos contiene algunos atributos con los tipos de datos especificados. Luego, creamos el "parsejsonarray" y definimos una cadena llamada jsonstring que contiene algunos datos de muestra JSON. Después de eso, declaramos la variable "JSON" donde invocamos la función de análisis. La función de análisis convierte esta cadena en un objeto jvalue con el nombre JSON.
El método \\ se usa para buscar en los datos JSON cada elemento con el nombre de "correo electrónico". Esta sintaxis es buena, ya que coincide con las técnicas de tipo XPath empleadas en la biblioteca Scala XML. El bucle for For busca repetidamente elementos, extrae cada elemento como un objeto de "correo electrónico", luego imprime el contenido de los datos de ese objeto. Hemos pasado algunos de los campos a la declaración impresa que solo se analizará en la Scala.
La siguiente salida de Scala se obtiene después de ejecutar el programa para analizar los datos JSON.
Conclusión
En este artículo se presentaron dos enfoques: uno usó los métodos Circe Scala, y el otro usó un bien conocido Lift-Json para analizar el texto JSON. La utilidad Circe Scala facilita la interacción con JSON mediante el uso de una API fácil de usar. Siempre podemos crear un codificador o decodificador personalizado, o podemos usar el código de extracción de campo directamente para cambiar el comportamiento del sistema. Y nos dimos cuenta de que, debido a sus características y facilidad de desarrollo, ambos siempre son favorecidos al analizar.