
Ich versuche, eine dynamische Tabelle basierend auf einem zweidimensionalen Array hinzuzufügen, das als JSON in einer Datei auf der Festplatte gespeichert ist. Ich habe keine Kontrolle über die Datei, da sie von einem Webdienst abgerufen wird und Dokumente basierend darauf dynamisch erstellt werden.
Als Beispiel für die Datei sieht sie ungefähr so aus:
[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter","lastName": "Jones"}
];
Antwort1
Dies ist ein gutes Beispiel, bei dem LuaTeX sehr nützlich ist. Sie können damit die JSON-Datei einfach laden, analysieren und die Daten in eine Tabelle schreiben. Hier ist ein Beispiel:
\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}
Ausgabe:
Hinweis: In Lua *a
wird die gesamte Datei gelesen, während *l
zum zeilenweisen Lesen usw. verwendet wird.Lua-Handbuch.