Lua では「配列」「オブジェクト」どちらも table
として実装されており、空テーブル {}
はどちらなのかわかりません。
lua-cjson
を使ってテーブルを JSON にするとき、これをなんとか区別したくなります。
空テーブルは空配列だったことにする
cjson.encode_empty_table_as_object(true)
この設定を使うと空テーブルが空配列として扱えます。簡単ですが、空オブジェクトであってほしいときも空配列になります。
encode
時、空なら空配列にエンコードされるようにする
local arr = {}
setmetatable(arr, cjson.empty_array_mt)
配列とわかっているものにメタテーブルをセットしてあげるようにすると、空のときに空配列になってくれます。
おわり
動かしていないのであとで動かします。