2012-01-31 4 views
7

私はこれを見逃しているかもしれませんが、ルアテーブルをテキストファイルにシリアライズ/デシリアライズする組み込みメソッドがありますか?ルアテーブルをシリアライズする方法

私は固定フォーマット(例えば5列の3列のデータ)のルアテーブルでこれを行うために、1組の方法を用意しました。

任意の形式のルアテーブルでこれを行う方法はありますか?例えば

、この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, 
      }, 
     } 
    }, 
} 

なお、このようなテキストに変換される:

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

シリアライズされたテキストのフォーマットは、任意の方法で定義することができます。テキスト文字列を空のluaテーブルにデシリアライズすることができる限り長くしてください。

答えて

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

参照here

4

ルアだけではこのような組み込み関数はありませんが、実装するのは難しくありません。プリベーク実装の数がここに記載されている単純なJSONシリアライザ用http://lua-users.org/wiki/TableSerialization

+0

驚くべきルアテーブルはjsonのように見えますが、すでにここにコロナのライブラリがありました(http://blog.anscamobile.com/2011/08/tutorial-exploring-json-usage-in-corona /)。 – cctan

7

「任意の形式のルアテーブルをシリアライズすることでJSONライブラリが非常に限定されているように見える理由はわかりません。ブール値/テーブル/関数値はキーとして扱われず、循環参照も処理されません。共有参照は共有としてシリアライズされず、Windowsではmath.hugeの値が正しくシリアル化されません。これらのほとんどはJSONの制限であり、ライブラリでこのように実装されていますが、これは一般的なLuaテーブルのシリアル化の解決策として提案されています(これはそうではありません)。

TableSerializationページまたはSerpent serializer and pretty-printerページの実装のいずれかを使用する方がよいでしょう。

+0

私はあなたに同意します、ルアはJSではありません。 –