我想知道如何將錶轉換爲字符串,然後再返回。將錶轉換爲字符串,然後再返回
我想用套接字模塊發送一個表,但我必須通過一個字符串來完成。
我願做這樣的:
a = { 1, 2, 3 } -- create table
b = tostring(a) -- convert table to string
c = totable(b) -- convert string back to table
我想知道如何將錶轉換爲字符串,然後再返回。將錶轉換爲字符串,然後再返回
我想用套接字模塊發送一個表,但我必須通過一個字符串來完成。
我願做這樣的:
a = { 1, 2, 3 } -- create table
b = tostring(a) -- convert table to string
c = totable(b) -- convert string back to table
正如其他人所說,你不能輕易序列化的一切,但你可以序列一個偉大的很多事情。對於這種類型的IPC,JSON是當前的通用語言,我強烈推薦它,尤其是因爲您可以很安全地與其他許多其他語言交換。
Lua有several implementations,但檢查出this one especially,因爲它運行良好,非常穩定,並且在github上有很好的維護活動級別。示例代碼:
json = require("json")
encoded = json.encode(someVar)
decoded = json.decode(someStr)
這將起作用,但是,LOVE引擎不支持JSON。但是,既然這確實回答了我的問題,我會選擇它作爲答案。 – SpecialBomb
JSON的這種實現是原生的lua,所以如果你控制雙方,你可能能夠在代碼中複製整個東西。無論如何祝你好運:-) –
好的。但我只能希望。事實上,我確實知道這將在服務器端工作,因此完成了50%。 – SpecialBomb
這裏有很多現有的Lua庫。 請參閱http://lua-users.org/wiki/TableSerialization 表序列化函數是相當直接的,寫你自己的是一個很好的學習練習。
PS。剛剛檢查過...該love2D API已經有一個表序列化庫。
[的確!](https://love2d.org/wiki/Tserial) –
一般來說,你不能。 (一些函數等不能被序列化。)你只關心一系列數字,就像你的例子一樣?如果是這樣,你可以做到這一點。 –
我主要不想使用字符串格式,因爲很多內容向我展示過。對於我想要做的事來說,這並不是那麼方便。 – SpecialBomb
@RyanVincent我特別想做的是將座標和其他信息從客戶端發送到服務器。這是用於使用love2d引擎的遊戲。發送一個表格而不是發送格式化的字符串將會簡單得多,因爲我只需要訪問它就是'player.x = ...',而不是將所有東西粘在一起,並將它們拉開。 – SpecialBomb