File tree Expand file tree Collapse file tree 2 files changed +22
-6
lines changed
Expand file tree Collapse file tree 2 files changed +22
-6
lines changed Original file line number Diff line number Diff line change @@ -249,13 +249,23 @@ json_encodable = function(obj, seen)
249249 if " table" == _exp_0 then
250250 if not (seen [obj ]) then
251251 seen [obj ] = true
252- local _tbl_0 = { }
253- for k , v in pairs (obj ) do
254- if type (k ) == " string" or type (k ) == " number" then
255- _tbl_0 [k ] = json_encodable (v )
252+ local o
253+ do
254+ local _tbl_0 = { }
255+ for k , v in pairs (obj ) do
256+ if type (k ) == " string" or type (k ) == " number" then
257+ _tbl_0 [k ] = json_encodable (v )
258+ end
259+ end
260+ o = _tbl_0
261+ end
262+ do
263+ local mt = getmetatable (obj )
264+ if mt then
265+ setmetatable (o , mt )
256266 end
257267 end
258- return _tbl_0
268+ return o
259269 end
260270 elseif " userdata" == _exp_0 then
261271 return encodable_userdata [obj ] and obj
Original file line number Diff line number Diff line change @@ -211,7 +211,13 @@ json_encodable = (obj, seen={}) ->
211211 when " table"
212212 unless seen[ obj]
213213 seen[ obj] = true
214- { k, json_encodable( v) for k, v in pairs ( obj) when type ( k) == " string" or type ( k) == " number" }
214+ o = { k, json_encodable( v) for k, v in pairs ( obj) when type ( k) == " string" or type ( k) == " number" }
215+
216+ -- keep metatables, like cjson.array_mt
217+ if mt = getmetatable obj
218+ setmetatable o, mt
219+
220+ o
215221 when " userdata"
216222 encodable_userdata[ obj] and obj
217223 when " function" , " thread"
You can’t perform that action at this time.
0 commit comments