我真的被困在這裏,絕對搜索了我的谷歌屁股,試圖從luajava中將一個表從lua導入到java中的數組中。 .. 現在,我已經可以做一些簡單的東西,印刷盧阿 - 瓦爾在Java中,並從表中讀取單個元素..這裏的一切工作LuaJava:用LuaJava將整個Lua表導入到類似Java的數組中
JAVA
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
L.LdoFile("data/test.lua");
L.getGlobal("x"); //I want to read lua-variable x
LuaObject obj = L.getLuaObject(L.getTop()); //So I get the top-element here
System.out.println(obj.getField("Version"));
LUA
x = { ["Version"] = 1.3,["Scans"] = 3 }
現在,這顯然是相當容易檢索單個值,但我想要整個對象到Java(作爲一個數組或其他),所以我可以做一些東西與它.. 我試過循環通過該LuaObject,但因爲它不是可迭代或'真正'的陣列,這是不可能的。 只需輸出obj
會告訴我它的一個lua表,我試過很多愚蠢的東西與.getObject,沒有成功。然後我讀了一些關於代理和.pcall的東西(看起來好像是用Java傳遞值到lua中的函數,這不是我想要的) 找不到任何東西(非常非常差)javadoc,希望有人有這方面的經驗..可能真的很容易,但很難找到的信息。 真的很高興有關於此的任何信息!
p.s.我無法更改原始lua文件(稍後),但該文件只包含一個大表格。
好吧,到目前爲止,這似乎有點高於我的頭,但我會試一試。所以,因爲我的lua-table有點動態(有用戶名),所以我不能使用getField來訪問它們,所以1.不是我選擇的選項?反思對我來說是全新的,一見鍾情似乎有點複雜..我會嘗試使用LdoString並在lua中創建一個循環,填充一張我從java發送的表格,不知道該如何工作,但我會給它一個鏡頭..感謝您的答覆,但是,也許我可以更容易地進行反思我想,我們會看到;) – bengalo 2012-04-05 15:18:33
Java Reflection *不是微不足道的。我的意思是「手動」,你應該寫出所有這樣的賦值:'Data d = new Data(); L.getField(idx,「name」); d.name = L.toString(L,-1); L.getField(idx,「version」); d.version = L.toString(L,-1); ...'並且不要忘記清理Lua堆棧之後:) – 2012-04-05 17:49:30
好吧,那時我沒有反思;)但是如果我不知道名字是什麼,我無法用getField檢索它們..桌子總是有相同的名稱,但項目是用戶名和服務器,我不知道他們是什麼。第一行總是'版本',第二個總是'掃描',但在掃描中它將存儲當時未知的服務器名稱執行..所以,任何解決方案呢? – bengalo 2012-04-05 18:48:18