json.encode(table [,compatible])

Lua 表を JSON エンコード・ストリングに変換します。 LuaのNULL値をテーブルに格納することはできないため、特別な値「json.NULL」を使用してLuaテーブルにNULL値を格納することができる。

JSON は、整数インデックスを持つ配列またはストリング・インデックスを持つオブジェクトをサポートしますが、一方で Lua は表が同じ表内のキーに整数値およびストリング値を使用できるようにします。 任意の Lua 表をストリングに直列化できるようにするために、nzLua は、デフォルトで、標準 JSON と互換性のない直列化された表になる可能性のあるエンコード・フォーマットを使用します。 例えば、以下の表は、整数インデックスとストリング・インデックスの両方を持っているため、標準 JSON フォーマットでエンコードできません。
t = {111,222,333,foo="abc"}

このテーブルで'json.encode(t)使用すると、文字列{1:111,2:222,3:333,"foo":"abc"}'が得られるが、'json.encode(t,true)使用すると、文字列{"1":111,"2":222,"3":333,"foo":"abc"}'が得られる。 互換性フォーマットで、表のすべての整数キーがストリング・キーに変換されます。

json.encode関数は再帰テーブルを検出しようとしないので、以下のコードはスタック・オーバーフロー・エラーになる。
t = {1,2,3}
t[4] = t
str = json.encode(t)
t = {a=123,b=987,c=333,d=json.NULL}
str = json.encode(t)