Lua Tables auslesen?
Ich habe per json.parse(jsonzeug) in einer lua datei die daten einer web api ausgelesen bekomme aber wenn ich "json.parse(jsonzeug)" in der console printe
"table: 0x2e7c9a78" die originale JSON ist "{"info":10}"
Jetzt zu meiner eigentlichen frage wie bekomme ich aus "0x2e7c9a78" (glaube table hash genannt) einen menschlich lesbaren table
Vielen Dank für eure Antworten!
1 Antwort
Mit einer Schleife kann man über alle Wertepaare in der Tabelle iterieren.
for key, value in pairs(yourTable) do
print(key, value)
end
Wenn du den Key für einen Eintrag selbst schon weißt, kannst du den dazugehörigen Wert auch direkt anfordern:
print(yourTable["info"])
Das sollte dir jetzt schon helfen, wenn du das Objekt entsprechend einsetzt. Du versuchst momentan, ein Objekt auszugeben, worauf dir Lua mit einem Identifier antwortet. Die obigen Methoden zeigen, wie du an die Daten im Objekt kommst.
yourTable = json.parse(jsonzeug)
print(yourTable) -- some hash id
print(yourTable["info"]) -- 10
Warum erstellst du my_table als String? Da sollte doch das Ergebnis der parse-Methode hinein.
und das was in my_table steht ist das ergebnis der parse-methode
Die parse-Methode sollte dir deinen bisherigen Angaben zufolge ein Objekt zurückgeben (eine Table). Schau der Vollständigkeit halber in die Dokumentation des Moduls, welches du da verwendest. Auch mit der type-Funktion solltest du dir den Typ der Variable ausgeben lassen können.
data = json.parse(...)
print(type(data))
Wenn du versuchst, ein Objekt auf der Konsole auszugeben:
print(some_complex_object)
weiß Lua erst einmal nicht, wie es dir das Objekt in lesbarer/textueller Form darstellen sollte. Es ist ja mehr als nur ein einfacher Wert (wie eine Zahl oder ein Buchstabe), sondern eine komplexe Struktur. Daher fällt Lua in dem Fall auf eine gesetzte Norm zurück: Statt dem Objekt wird eine ID ausgegeben, die das Objekt textuell repräsentiert.
Das heißt für dich, dass der Wert, der in der Konsole erscheint, nicht dem tatsächlichen Wert des Objekts entspricht.
Speicher dir das Ergebnis von parse in einer Variable und arbeite mit der weiter. Genau so, wie ich es gezeigt habe.
Ja dies hilft mir wenn der hash (0x2e7c9a78) schon lesbar gemacht worden wäre allerdings muss ich ja irgendwie aus dem -> 0x2e7c9a78 das machen -> info = 10