
Estoy intentando agregar una tabla dinámica basada en una matriz bidimensional que se almacena como JSON en un archivo en el disco. No tengo control sobre el archivo, ya que se extrae de un servicio web y los documentos se crean dinámicamente en base a él.
Como muestra del archivo, se parece a esto:
[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter","lastName": "Jones"}
];
Respuesta1
Este es un buen ejemplo de que LuaTeX resulta muy útil. Puede cargar y analizar fácilmente el archivo json y escribir los datos en una tabla. Aquí hay un ejemplo:
\begin{filecontents*}{data.json}
[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
];
\end{filecontents*}
\documentclass{article}
\usepackage{luacode}
\begin{document}
\begin{luacode}
require("lualibs.lua")
local file = io.open('data.json')
local jsonstring = file:read('*a')
file.close()
local jsondata = utilities.json.tolua(jsonstring)
tex.print('\\begin{tabular}{cc}')
tex.print('\\hline\\textbf{Firstname} & \\textbf{Lastname} \\\\\\hline')
for key, value in pairs(jsondata) do
tex.print(value["firstName"] .. ' & ' .. value["lastName"] .. '\\\\')
end
tex.print('\\hline\\end{tabular}')
\end{luacode}
\end{document}
Producción:
Nota: En lua *a
lee el archivo completo, mientras que *l
se usaría para leer línea por línea, etc.manual de lua.