Notas simples sobre el uso de jq para procesar el formato json
El formato json incluye los siguientes tipos básicos: números, cadenas, falso, verdadero, nulo
Y los tipos compuestos compuestos por tipos básicos son: matrices, objetos donde las matrices son This; se admite el formato.
B. Procesamiento de objetos:
1). Porque cada elemento del objeto existe en forma de clave:valor, aunque el valor también puede ser un tipo compuesto. , pero no afecta el formato clave: valor. Por lo tanto, para los objetos, jq.key generalmente se usa para obtener el valor de la clave correspondiente. La clave no necesita estar entre comillas aquí y, por supuesto, puede hacerlo. Entre comillas, las claves son todas del tipo cadena de todos modos.
2) Si desea obtener los valores clave de todos los elementos del objeto, las claves deben concatenarse detrás del objeto. Cabe señalar que esta no es la canalización de shell utilizada. pero la canalización incorporada de jq. Por lo tanto, es parte de los parámetros de jq. Por ejemplo:
De hecho, el atributo de claves no solo admite objetos, sino que también admite matrices json, como:
3) Determine si existe una determinada clave.
Utilice el atributo de claves integrado de jq anterior para obtener todas las claves. tiene el método de jq. Este método puede determinar si existe la clave correspondiente. El ejemplo es el siguiente:
4). Agregue un signo de interrogación después de la condición de búsqueda; luego, si no se encuentra, no se generará ningún error y, en su lugar, se generará un valor nulo. Este signo de interrogación se puede agregar después del método (como puede ver en el siguiente ejemplo). ).
Esto es muy útil durante la búsqueda recursiva; de lo contrario, puede ocurrir un error.
5). El resultado de la búsqueda de jq está vacío, evite generar nulo, pero no genera nada.
No lo hago. sabemos cómo implementarlo en este momento, usemos otros comandos de Linux para filtrar por ahora
6). Busque la clave con la palabra clave según la palabra clave especificada, que es una búsqueda difusa
jq admite expresiones regulares PCRE, por lo que admite la búsqueda difusa. Aquí mostramos principalmente los resultados del uso del método de escaneo para generar la búsqueda difusa. Los ejemplos de uso son los siguientes:
7). clave, busque todos los objetos anidados El valor de la clave, genere el valor
Utilice .. o recurse para indicar una búsqueda recursiva y luego realice una búsqueda regular a través de la canalización, por ejemplo:
8). ¿Cómo están juntas las claves y los valores que coinciden con la clave?
El comando anterior representa un método recursivo, que obtiene todos los pares clave:valor cuya clave es nombre y mostrándolos en forma de clave: valor, pero el objeto de diccionario vacío ¿Cómo descartarlo? Aún no se ha encontrado una buena solución
9). Debido a que el atributo de claves admite tanto objetos como matrices, ¿cómo eliminar la matriz y obtener solo las claves del objeto?
Existe un método de recorrido que se puede implementar, pero no se usa comúnmente, por lo que no lo discutiremos aquí.
10). para la búsqueda difusa se describe arriba y el uso recursivo para el anidamiento. ¿Cómo combinar los dos?
Debido a que el método de escaneo solo se puede usar en cadenas, no puede simplemente combinar recursividad y escaneo. Aquí, necesita usar claves para implementar consultas difusas anidadas. Por ejemplo:
11. ). Otros consejos de uso:
En este caso, también puedes usar el formato .key1|.key2. Personalmente, prefiero usar .key1|.key2, porque parece más claro. , el siguiente ejemplo.
En la mayoría de los casos, la capa más externa del formato compuesto json que vemos tiene la forma de una matriz, no de un objeto. Debido a que el objeto json debe tener el formato clave: valor, aunque el valor también puede estar en un formato compuesto, debe tener el formato clave: valor y no existe correlación entre los tipos de diferentes elementos de la matriz. La misma matriz puede contener ambos Hay elementos de cadena, elementos de objeto y números... Por lo tanto, la capa más externa de un formato json de tipo compuesto generalmente tiene la forma de una matriz.
Primero use una consulta difusa. y recursividad Encuentre la clave correspondiente;-----En resumen, es encontrar la clave
y luego use la clave específica para encontrar todos los resultados con consulta recursiva;------En En resumen, se basa en La clave atraviesa todos los valores
Finalmente, los resultados anteriores se procesan aún más para obtener los resultados requeridos ----- En resumen, los valores obtenidos se filtran aún más. obtenga los resultados realmente requeridos
Un ejemplo sencillo es el siguiente:
Un breve resumen: