使用终端对来自两个嵌入式 JSON 数组的信息进行成对组合

pairwise combination of information from two embedded JSON arrays using terminal

我有一个这样的 json 文件:

{"offset":0,"results":[{"actividades/_text":["Ciencias Naturales Logro y Autoevaluación","Ciencias Naturales Seres Vivos - Objetos Inertes","Educación Artística Contenidos","Educación Religiosa Dibujo","Educación Religiosa Estructura 1 Periodo","Educación Religiosa Comunicado","Educación Religiosa Respuesta Eucaristía","Educación Religiosa Eucaristía","Expresión Corporal Estructura General","Expresión Corporal Vestuario de Ensayo","Ingles Recomendaciones Generales 2016","Ingles Temas Logros Indicadores Todos los Periodos","Ingles Rules and oral expressions to be used in the classroom","Lengua Castellana Estructura Curricular","Matemáticas Temas Logros 1 Periodo","Matemáticas Taller #1","Música Estructura 1 Periodo","Tecnología e Informática Support guide first term"],"actividades/_source":["/ArchivosCargados/2016/CUADRO-PRIMER-BIMESTRE-2016-PRIMERO.pdf","/ArchivosCargados/2016/Hojita-Seres-Vivos.pdf","/ArchivosCargados/2016/2016-CONTENIDOS-ARTES-PLASTICAS-PRIMARIA-J-T-12345.pdf","/ArchivosCargados/2016/PRIMERO-RELILGION.pdf","/ArchivosCargados/2016/Estructura-RELGION.pdf","/ArchivosCargados/2016/PRIMERO-RELIGION.pdf","/ArchivosCargados/2016/RESPUESTAS-EUCARISTIA.pdf","/ArchivosCargados/2016/respuestas-misa.pdf","/ArchivosCargados/2016/Estructura-general-grado-primero-2016.pdf","/ArchivosCargados/2016/VESTUARIO-CLASE-EXPRESION-CORPORAL-2016.pdf","/ArchivosCargados/2016/RECOMENDACIONES-GENERALES-2016.pdf","/ArchivosCargados/2016/TEMAS-LOGRO-INDICADORES-PERIODO.pdf","/ArchivosCargados/2016/ENGLISH-USED-IN-CLASS.pdf","/ArchivosCargados/2016/lc-1.pdf","/ArchivosCargados/2016/Temas-logros.pdf","/ArchivosCargados/2016/Taller1-16.pdf","/ArchivosCargados/2016/PROGRAMA-PLATAFORMA.pdf","/ArchivosCargados/2016/first-grade.pdf"],"actividades":["http://www.domain.com/ArchivosCargados/2016/CUADRO-PRIMER-BIMESTRE-2016-PRIMERO.pdf","http://www.domain.com/ArchivosCargados/2016/Hojita-Seres-Vivos.pdf","http://www.domain.com/ArchivosCargados/2016/2016-CONTENIDOS-ARTES-PLASTICAS-PRIMARIA-J-T-12345.pdf","http://www.domain.com/ArchivosCargados/2016/PRIMERO-RELILGION.pdf","http://www.domain.com/ArchivosCargados/2016/Estructura-RELGION.pdf","http://www.domain.com/ArchivosCargados/2016/PRIMERO-RELIGION.pdf","http://www.domain.com/ArchivosCargados/2016/RESPUESTAS-EUCARISTIA.pdf","http://www.domain.com/ArchivosCargados/2016/respuestas-misa.pdf","http://www.domain.com/ArchivosCargados/2016/Estructura-general-grado-primero-2016.pdf","http://www.domain.com/ArchivosCargados/2016/VESTUARIO-CLASE-EXPRESION-CORPORAL-2016.pdf","http://www.domain.com/ArchivosCargados/2016/RECOMENDACIONES-GENERALES-2016.pdf","http://www.domain.com/ArchivosCargados/2016/TEMAS-LOGRO-INDICADORES-PERIODO.pdf","http://www.domain.com/ArchivosCargados/2016/ENGLISH-USED-IN-CLASS.pdf","http://www.domain.com/ArchivosCargados/2016/lc-1.pdf","http://www.domain.com/ArchivosCargados/2016/Temas-logros.pdf","http://www.domain.com/ArchivosCargados/2016/Taller1-16.pdf","http://www.domain.com/ArchivosCargados/2016/PROGRAMA-PLATAFORMA.pdf","http://www.domain.com/ArchivosCargados/2016/first-grade.pdf"]}],"cookies":["ASP.NET_SessionId=\"0vy5tp45alrfik55q3bs24mr\";Path=\"/\";Domain=\"www.domain.com\";Port=\"80\""],"connectorVersionGuid":"e35c3b39-301e-4474-b75e-5473963b1852","connectorGuid":"b0fe3dd7-fd92-472b-b197-14d86f91c5fb","pageUrl":"http://www.domain.com/principal.aspx?tbindex=3&tab_codigo=33","outputProperties":[{"name":"actividades","type":"URL"}]}

基本上,我有三个对象:活动、actividades/_text 和 actividades/_source。我想创建一个最终的 json 文件,其中包含对 actividades 和 actividades/_text,其顺序与文件中出现的顺序相同,我的意思是,例如:

"Ciencias Naturales Logro y Autoevaluación":"http://www.domain.com/ArchivosCargados/2016/CUADRO-PRIMER-BIMESTRE-2016-PRIMERO.pdf"

我想使用 linux 终端执行此操作,如果我必须安装一些实用程序也没关系。我试过 jq 但没有成功:

jq '.actividades + .actividades/_text' test.json 

有什么想法吗?

关键是 transpose 过滤器。以下:

.results[0] | [ ."actividades/_text", .actividades ] | transpose

生成对,例如:

[
  "Ciencias Naturales Logro y Autoevaluación",
  "http://www.domain.com/ArchivosCargados/2016/CUADRO-PRIMER-BIMESTRE-2016-PRIMERO.pdf"
]

要将这些对组合成一个对象,请添加:

| map({ (.[0]):.[1]} ) | add

要生成 "X":"Y" 格式的输出,您也可以使用以下调用:

jq -r  '.results[0]
| [ ."actividades/_text", .actividades ]
| transpose[]
| "\"\(.[0])\":\"\(.[1])\"" '

根据您的输入,最后生成:

"Ciencias Naturales Logro y Autoevaluación":"http://www.domain.com/ArchivosCargados/2016/CUADRO-PRIMER-BIMESTRE-2016-PRIMERO.pdf"
"Ciencias Naturales Seres Vivos - Objetos Inertes":"http://www.domain.com/ArchivosCargados/2016/Hojita-Seres-Vivos.pdf"
....
....