2016-09-27 90 views
1

我想知道如何將錶轉換爲字符串,然後再返回。將錶轉換爲字符串,然後再返回

我想用套接字模塊發送一個表,但我必須通過一個字符串來完成。

我願做這樣的:

a = { 1, 2, 3 } -- create table 
b = tostring(a) -- convert table to string 
c = totable(b) -- convert string back to table 
+1

一般來說,你不能。 (一些函數等不能被序列化。)你只關心一系列數字,就像你的例子一樣?如果是這樣,你可以做到這一點。 –

+0

我主要不想使用字符串格式,因爲很多內容向我展示過。對於我想要做的事來說,這並不是那麼方便。 – SpecialBomb

+0

@RyanVincent我特別想做的是將座標和其他信息從客戶端發送到服務器。這是用於使用love2d引擎的遊戲。發送一個表格而不是發送格式化的字符串將會簡單得多,因爲我只需要訪問它就是'player.x = ...',而不是將所有東西粘在一起,並將它們拉開。 – SpecialBomb

回答

2

正如其他人所說,你不能輕易序列化的一切,但你可以序列一個偉大的很多事情。對於這種類型的IPC,JSON是當前的通用語言,我強烈推薦它,尤其是因爲您可以很安全地與其他許多其他語言交換。

Lua有several implementations,但檢查出this one especially,因爲它運行良好,非常穩定,並且在github上有很好的維護活動級別。示例代碼:

json = require("json") 
encoded = json.encode(someVar) 
decoded = json.decode(someStr) 
+0

這將起作用,但是,LOVE引擎不支持JSON。但是,既然這確實回答了我的問題,我會選擇它作爲答案。 – SpecialBomb

+0

JSON的這種實現是原生的lua,所以如果你控制雙方,你可能能夠在代碼中複製整個東西。無論如何祝你好運:-) –

+0

好的。但我只能希望。事實上,我確實知道這將在服務器端工作,因此完成了50%。 – SpecialBomb

4

這裏有很多現有的Lua庫。 請參閱http://lua-users.org/wiki/TableSerialization 表序列化函數是相當直接的,寫你自己的是一個很好的學習練習。

PS。剛剛檢查過...該love2D API已經有一個表序列化庫。

+0

[的確!](https://love2d.org/wiki/Tserial) –

相關問題