Lua Tables auslesen?

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"])
Marek2000 
Fragesteller
 03.11.2021, 12:03

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

0
regex9  03.11.2021, 12:52
@Marek2000

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
0
Marek2000 
Fragesteller
 03.11.2021, 13:17
@regex9

Input:

my_table = "table: 0x2e7c9a78"

print(my_table) -- some hash id

print(my_table["info"]) -- 10

Output:

table: 0x2e7c9a78

nil

0
regex9  03.11.2021, 13:21
@Marek2000

Warum erstellst du my_table als String? Da sollte doch das Ergebnis der parse-Methode hinein.

0
Marek2000 
Fragesteller
 03.11.2021, 13:25
@regex9

war nur zum test normalerweise wird es von ner api übertragen

0
Marek2000 
Fragesteller
 03.11.2021, 13:29
@Marek2000

und das was in my_table steht ist das ergebnis der parse-methode

0
regex9  03.11.2021, 13:35
@Marek2000

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.

0
Marek2000 
Fragesteller
 03.11.2021, 13:44
@regex9

TOP 100%tig wirklich besten dank hab mir nämlich seit 3 tagen daran den kopfzerbrochen...

Jetzt hats funktioniert! Besten Dank!

1