Android Gradle learning series (4) -Gradle combate de uso avanzado

Prólogo

GroovyLa gramática básica que explicamos principalmente Groovyen los últimos artículos , este artículo es la gramática avanzada que explicamos principalmente

operación json, operación xml, operación de archivo

1. Explicación detallada de la operación Json.

JsonBásicamente, hay dos operaciones relacionadas, una es Jsonconvertir una cadena en un objeto de entidad. Una es convertir nuestro objeto de entidad en una Jsoncadena correspondiente . Luego tenemos las Groovyclases y métodos correspondientes para ayudarnos

groovy.json.JsonSlurper: convierte jsondatos en objetos de entidad groovy.json.JsonOutput: convierte objetos de entidad en jsondatos

1.1 Usa el método propio

Escribamos un ejemplo para ver el efecto.

La primera: el objeto físico se convierte a Json
Inserte la descripción de la imagen aquí
la vez Groovy, disponen de un modo directo que me ayude a formatear
Inserte la descripción de la imagen aquí
segundo: JSON se convertirá en un objeto sólido
Inserte la descripción de la imagen aquí
que parseTextel parámetro es String, por lo general, usamos la palabra se puede utilizar directamente parse, los parámetros de este método es básicamente Admite cualquier tipo, no soloString
Inserte la descripción de la imagen aquí

1.2 Uso de bibliotecas de terceros

Sabemos que Groovyes totalmente compatible Java, por lo que Javalas jsonbibliotecas de terceros que se pueden usar (como :, gsono fastjsonlo Groovyque sea , también se pueden importar y usar en China, pero la Groovyque viene con ella es en realidad suficiente para nosotros.

Hablemos sobre cómo importar el paquete jar gson
descargado primero gson, ponerlo en nuestro directorio libs ( dirección de descarga ),
Inserte la descripción de la imagen aquí
y luego importar directamente la clase correspondiente en el archivo de script y usar el método correspondiente.
Inserte la descripción de la imagen aquí

1.3 Análisis de solicitudes de red simuladas

En realidad, básicamente solicitamos datos del servidor, el cliente los convierte en nuestro objeto de entidad y luego muestra nuestro objeto de entidad en nuestra interfaz de usuario o local de almacenamiento. Esto
Inserte la descripción de la imagen aquí
es un Javapoco diferente al nuestro , Javaen el que debe definir un objeto específico Clase de entidad para analizar, obtener los datos correspondientes después del análisis, pero Groovyno es necesario definir una clase de entidad específica, podemos obtener directamente los datos que queremos

Operación detallada 2.xml

Inserte la descripción de la imagen aquí
El mapa mental anterior es Javados formas de procesar datos en formato xml, y Groovyproporcionamos la herramienta de procesamiento xml correspondiente directamente

groovy.xml.XmlSlurper: convierte datos crudos xml en objetos de entidad groovy.xml.MarkupBuilder: convierte objetos de entidad en datos xml

A continuación usaremos

2.1 XML de análisis maravilloso

Primero definimos un xml

final String xml = '''
  <response version-api="2.0">
    <value>
      <books id="1" classification="android">
        <book available="20" id="1">
          <title>疯狂Android讲义</title>
          <author id="1">李刚</author>
        </book>
        <book available="14" id="2">
          <title>第一行代码</title>
          <author id="2">郭林</author>
        </book>
        <book available="13" id="3">
          <title>Android开发艺术探索</title>
          <author id="3">任玉刚</author>
        </book>
        <book available="5" id="4">
          <title>Android源码设计模式</title>
          <author id="4">何红辉</author>
        </book>
      </books>
      <books id="2" classification="web">
        <book available="10" id="1">
          <title>Vue从入门到精通</title>
          <author id="4">李刚</author>
        </book>
      </books>
    </value>
  </response>
'''

JsonHubo uno en la operación antes JsonSlurper, luego el correspondiente xmlse encontrará por casualidad. XmlSlurperTambién tiene un parsemétodo, que es básicamente el JsonSlurpermismo que el anterior .

Por ejemplo, queremos generar el nombre del primer libro: Crazy Android Lectures, ¿qué debemos hacer?
Inserte la descripción de la imagen aquí
Descubrimos que es muy simple y mucho más Javaconveniente que el nuestro , entonces , ¿qué sucede si queremos generar el atributo de etiqueta? Por ejemplo, para obtener el atributo disponible de un libro
Inserte la descripción de la imagen aquí

2.2 XML transversal

¿Qué debemos hacer si queremos obtener xmluna colección de todos los libros cuyo autor es Li Gang?
Aquí nuestra lógica debería ser encontrar las capas una por una, encontrar booksla colección en la primera capa response.value.books, luego atravesarla books, encontrar cada una booky tomarla la authormirada no se llama Gang,
Inserte la descripción de la imagen aquí
vemos los resultados de nuestra producción es el resultado correcto, pero Groovyde hecho, proporciona un método más sencillo de atravesar
recorrido profundo depthFirst, hemos logrado de esta manera bajo el efecto de lo anterior
Inserte la descripción de la imagen aquí
resultado es el mismo, pero por debajo de este Este método es más fácil de usar.

El recorrido profundo naturalmente tiene un recorrido transversal amplio children(), por ejemplo, queremos obtener el nombre del libro cuyo identificador de atributo de etiqueta es 2.
Inserte la descripción de la imagen aquí

2.3 Generar XML

GroovyTambién puede generar lo que desea xml, por ejemplo, si pensamos en generar el siguiente, ¿ xmlqué debemos hacer?

/**
 * 生成xml格式数据
 * <langs type='current' count='3' mainstream='true'>
 * <language flavor='static' version='1.5'>java</language>
 * <language flavor='dynamic' version='1.6.0'>Groovy</language>
 * <language flavor='dynamic' version='1.9'>JavaScript</language>
 * </langs>
 */

En primer lugar, vamos a analizar este caso queremos generar xml, tiene dos nodos, uno langsde atributos son: type,count.mainstream, langsun nodo de abajo hay otro nodo language, la propiedad es: flavor,versiona continuación, es el correspondiente value
después de empezar la letra clara análisis MarkupBuilderSí, se usará una clase aquí . Esta clase es xmlla clase principal para generar datos.
Inserte la descripción de la imagen aquí
Si languagehay un nodo debajo, ¿cómo obtenerlo? languageIgual que el nodo que especificamos
Inserte la descripción de la imagen aquí

Pero, en general, en el desarrollo real, a menudo convertimos objetos de entidad de la xmlmisma manera que antes.
Primero construimos una Languageclase

//对应xml中的language节点
class Language {
    String flavor
    String version
    String value
}

Luego construye una Langsclase

//对应xml中的langs节点
class Langs {
    String type = 'current'
    int count = 3
    boolean mainstream = true
    def languages = [
            new Language(flavor: 'static', version: '1.5', value: 'java'),
            new Language(flavor: 'dynamic', version: '1.6.0', value: 'Groovy'),
            new Language(flavor: 'dynamic', version: '1.9', value: 'JavaScript')
    ]

}

Luego generamos uno de acuerdo con nuestro escrito anterior xml,
Inserte la descripción de la imagen aquí
también podemos Jsoncombinarlo con nosotros , la Jsoncadena JsonSlurpergenera la clase de entidad y luego MarkupBuildergenera el correspondientexml

3. Operaciones detalladas del archivo

Inserte la descripción de la imagen aquí
Importación pensamiento por encima de nosotros Javaen el manejo de archivos en Groovyque se puede utilizar estos métodos, pero Groovytambién se extiende una serie de métodos más eficientes y potentes (ResourceGroovyMethods)
entonces tenemos algunos ejemplos para las prácticas específicas
Inserte la descripción de la imagen aquí
que tomamos en Los ejemplos aquí toman este archivo como ejemplo, se genera automáticamente cuando se crea el proyecto y el objeto de
creación Filees Javaexactamente el mismo que el nuestro.
Inserte la descripción de la imagen aquí

3.1 atravesar el archivo

Primero sacamos el contenido de este archivo, aquí necesitamos usar eachLineeste método
Inserte la descripción de la imagen aquí

3.2 Obtenga todo el contenido del archivo

Esto es lo mismo que nuestro resultado anterior
Inserte la descripción de la imagen aquí

3.3 Obtenga una lista de cada línea de texto

Obtenga cada línea de lista de texto
Este método devuelve una lista de cada línea en nuestro archivo como un elemento

3.4 Leer una parte de un archivo

Obtenemos los primeros 100 caracteres del archivo
Inserte la descripción de la imagen aquí

3.5 Copiar archivos

Inserte la descripción de la imagen aquí
Lo copiamos línea por línea aquí, y también podemos copiarlo todo de una vez, llamamos a este método
Inserte la descripción de la imagen aquí

Vemos un archivo copiado con éxito, abrimos este archivo
Inserte la descripción de la imagen aquí

Es exactamente el mismo que el contenido del archivo fuente. También
hay un lugar para tener en cuenta Javaaquí. Necesitamos cerrar manualmente la secuencia al leer y escribir archivos, pero Groovypodemos omitir este paso porque lo hemos hecho internamente.
Primero veamos el withWritermétodo
Inserte la descripción de la imagen aquí

Continúa bajando,
Inserte la descripción de la imagen aquí
veamos finallyel método dentro
Inserte la descripción de la imagen aquí

3.6 Guardar el objeto en un archivo

Aquí se usa un nuevo método withObjectOutputStream, usamos texto reader和writer, usamos objetosstream
Inserte la descripción de la imagen aquí

Escribamos un ejemplo para verificar que
Inserte la descripción de la imagen aquí
debemos prestar atención aquí: este objeto debe implementar la interfaz de serialización, de lo contrario, informará un error

Inserte la descripción de la imagen aquí

3.7 Eliminar el objeto del archivo

Inserte la descripción de la imagen aquí

Tomamos el que acabamos de guardar person
Inserte la descripción de la imagen aquí
y podemos ver que es lo mismo que guardamos

OK, aquí hemos terminado así, comenzaremos a aprender Gradledel siguiente artículo, nos vemos en el próximo artículo

87 artículos originales publicados · Me gusta 319 · Visita 1.49 millones +

Supongo que te gusta

Origin blog.csdn.net/Greathfs/article/details/102809322
Recomendado
Clasificación