annotate framework/env/encode/json.lua @ 365:6ad9f6113c52
Support for primary keys in JSON documents
 | author | jbe | 
 | date | Fri May 22 01:44:31 2015 +0200 (2015-05-22) | 
 | parents | 81d94b362043 | 
 | children |  | 
 
 | rev | line source | 
| jbe/bsw@0 | 1 --[[-- | 
| jbe@285 | 2 json_string =  -- JavaScript code | 
| jbe/bsw@0 | 3 encode.json( | 
| jbe@285 | 4   value        -- nil, false, true, a number, a string, or json.array{...} or json.object{...} | 
| jbe/bsw@0 | 5 ) | 
| jbe/bsw@0 | 6 | 
| jbe@285 | 7 This function encodes any native datatype or table structure to JavaScript object notation (JSON). In order to distinguish between the empty array and the empty object, use json.array{} and json.object{} respectively. | 
| jbe@10 | 8 | 
| jbe@285 | 9 The return value of this function is additionally escaped in such way that it can be safely included in inline scripts both in HTML and XHTML (within CDATA section). | 
| jbe@223 | 10 | 
| jbe/bsw@0 | 11 --]]-- | 
| jbe/bsw@0 | 12 | 
| jbe/bsw@0 | 13 function encode.json(obj) | 
| jbe@293 | 14   local str = json.export(obj) | 
| jbe@285 | 15   str = string.gsub(str, "</", "<\\/") | 
| jbe@285 | 16   str = string.gsub(str, "<!%[CDATA%[", "\\u003c![CDATA[") | 
| jbe@285 | 17   str = string.gsub(str, "]]>", "]]\\u003e") | 
| jbe@285 | 18   return str | 
| jbe/bsw@0 | 19 end |