2012-01-31 29 views
7

Tôi có thể đã bỏ lỡ điều này, nhưng có phương pháp tích hợp để tuần tự hóa/deserializing các bảng lua thành các tệp văn bản và ngược lại không?phương pháp để tuần tự hóa các bảng lua

Tôi đã có một cặp phương pháp để thực hiện điều này trên bảng lua có định dạng cố định (ví dụ: 3 cột dữ liệu có 5 hàng).

Có cách nào để thực hiện điều này trên bảng lua với bất kỳ định dạng tùy ý nào không?

Đối với một ví dụ, đưa ra này bảng lua:

local scenes={ 
    {name="scnSplash", 
     obj={ 
      { 
       name="bg", 
       type="background", 
       path="scnSplash_bg.png", 
      }, 
      { 
       name="bird", 
       type="image", 
       path="scnSplash_bird.png", 
       x=0, 
       y=682, 
      }, 
     } 
    }, 
} 

Nó sẽ được chuyển đổi thành văn bản như thế này:

{name="scnSplash",obj={{name="bg",type="background",path="scnSplash_bg.png",},{name="bird", type="image",path="scnSplash_bird.png",x=0,y=682,}},} 

Định dạng của văn bản serialized thể được định nghĩa trong bất kỳ cách nào, như miễn là chuỗi văn bản có thể được deserialized vào một bảng lua rỗng.

Trả lời

2
require "json" 
local t = json.decode(jsonFile("sample.json")) 

tham khảo here cho một serializer json đơn giản.

4

Riêng biệt Lua không có bất kỳ nội trang nào như vậy, nhưng việc triển khai thực hiện không khó. Một số triển khai prebaked được liệt kê ở đây: http://lua-users.org/wiki/TableSerialization

+0

ouch, không có bảng lua tự hỏi trông giống như json, đã có một thư viện cho Corona ở đây [http://blog.anscamobile.com/2011/08/tutorial-exploring-json-usage-in-corona /). – cctan

7

Tôi không chắc tại sao thư viện JSON được đánh dấu là câu trả lời đúng vì có vẻ rất giới hạn trong việc tuần tự hóa "các bảng lua có định dạng tùy ý". Nó không xử lý các giá trị boolean/table/function như các khóa và không xử lý các tham chiếu vòng tròn. Các tham chiếu được chia sẻ không được tuần tự hóa thành các giá trị được chia sẻ và math.huge không được tuần tự hóa chính xác trên Windows. Tôi nhận ra rằng hầu hết trong số này là những hạn chế JSON (và do đó được thực hiện theo cách này trong thư viện), nhưng điều này đã được đề xuất như là một giải pháp cho serialization Lua bảng chung chung (mà nó không phải là).

Sẽ tốt hơn bằng cách sử dụng một trong các triển khai từ trang TableSerialization hoặc Serpent serializer and pretty-printer của tôi.

+0

Tôi đồng ý với bạn, Lua không phải là JS. –

Các vấn đề liên quan