annotate framework/env/encode/json.lua @ 457:17a2b7e1c463
Improved function request.get_header{...}
 | author | jbe | 
 | date | Mon Jul 25 22:32:34 2016 +0200 (2016-07-25) | 
 | 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 |