luci.jsonc.html 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html>
  4. <head>
  5. <title>Reference</title>
  6. <link rel="stylesheet" href="../luadoc.css" type="text/css" />
  7. <!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
  8. </head>
  9. <body>
  10. <div id="container">
  11. <div id="product">
  12. <div id="product_logo"></div>
  13. <div id="product_name"><big><b></b></big></div>
  14. <div id="product_description"></div>
  15. </div> <!-- id="product" -->
  16. <div id="main">
  17. <div id="navigation">
  18. <h1>LuaDoc</h1>
  19. <ul>
  20. <li><a href="../index.html">Index</a></li>
  21. </ul>
  22. <!-- Module list -->
  23. <h1>Modules</h1>
  24. <ul>
  25. <li>
  26. <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
  27. </li>
  28. <li>
  29. <a href="../modules/luci.http.html">luci.http</a>
  30. </li>
  31. <li>
  32. <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
  33. </li>
  34. <li>
  35. <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
  36. </li>
  37. <li>
  38. <a href="../modules/luci.http.protocol.date.html">luci.http.protocol.date</a>
  39. </li>
  40. <li>
  41. <a href="../modules/luci.http.protocol.mime.html">luci.http.protocol.mime</a>
  42. </li>
  43. <li>
  44. <a href="../modules/luci.i18n.html">luci.i18n</a>
  45. </li>
  46. <li>
  47. <a href="../modules/luci.ip.html">luci.ip</a>
  48. </li>
  49. <li>
  50. <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
  51. </li>
  52. <li>
  53. <a href="../modules/luci.json.html">luci.json</a>
  54. </li>
  55. <li><strong>luci.jsonc</strong></li>
  56. <li>
  57. <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
  58. </li>
  59. <li>
  60. <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
  61. </li>
  62. <li>
  63. <a href="../modules/luci.model.uci.html">luci.model.uci</a>
  64. </li>
  65. <li>
  66. <a href="../modules/luci.rpcc.html">luci.rpcc</a>
  67. </li>
  68. <li>
  69. <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
  70. </li>
  71. <li>
  72. <a href="../modules/luci.sys.html">luci.sys</a>
  73. </li>
  74. <li>
  75. <a href="../modules/luci.sys.init.html">luci.sys.init</a>
  76. </li>
  77. <li>
  78. <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
  79. </li>
  80. <li>
  81. <a href="../modules/luci.sys.net.html">luci.sys.net</a>
  82. </li>
  83. <li>
  84. <a href="../modules/luci.sys.process.html">luci.sys.process</a>
  85. </li>
  86. <li>
  87. <a href="../modules/luci.sys.user.html">luci.sys.user</a>
  88. </li>
  89. <li>
  90. <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
  91. </li>
  92. <li>
  93. <a href="../modules/luci.util.html">luci.util</a>
  94. </li>
  95. <li>
  96. <a href="../modules/nixio.html">nixio</a>
  97. </li>
  98. <li>
  99. <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
  100. </li>
  101. <li>
  102. <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
  103. </li>
  104. <li>
  105. <a href="../modules/nixio.File.html">nixio.File</a>
  106. </li>
  107. <li>
  108. <a href="../modules/nixio.README.html">nixio.README</a>
  109. </li>
  110. <li>
  111. <a href="../modules/nixio.Socket.html">nixio.Socket</a>
  112. </li>
  113. <li>
  114. <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
  115. </li>
  116. <li>
  117. <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
  118. </li>
  119. <li>
  120. <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
  121. </li>
  122. <li>
  123. <a href="../modules/nixio.bin.html">nixio.bin</a>
  124. </li>
  125. <li>
  126. <a href="../modules/nixio.bit.html">nixio.bit</a>
  127. </li>
  128. <li>
  129. <a href="../modules/nixio.crypto.html">nixio.crypto</a>
  130. </li>
  131. <li>
  132. <a href="../modules/nixio.fs.html">nixio.fs</a>
  133. </li>
  134. </ul>
  135. <!-- File list -->
  136. </div><!-- id="navigation" -->
  137. <div id="content">
  138. <h1>Class <code>luci.jsonc</code></h1>
  139. <p>
  140. LuCI JSON parsing and serialization library.
  141. The luci.jsonc class is a high level Lua binding to the JSON-C library to
  142. allow reading and writing JSON data with minimal overhead.</p>
  143. <h2>Functions</h2>
  144. <table class="function_list">
  145. <tr>
  146. <td class="name" nowrap><a href="#new">new</a>&nbsp;()</td>
  147. <td class="summary">
  148. Construct a new luci.jsonc.parser instance.</td>
  149. </tr>
  150. <tr>
  151. <td class="name" nowrap><a href="#parse">parse</a>&nbsp;(json)</td>
  152. <td class="summary">
  153. Parse a complete JSON string and convert it into a Lua data structure.</td>
  154. </tr>
  155. <tr>
  156. <td class="name" nowrap><a href="#stringify">stringify</a>&nbsp;(data, pretty)</td>
  157. <td class="summary">
  158. Convert given Lua data into a JSON string.</td>
  159. </tr>
  160. </table>
  161. <br/>
  162. <br/>
  163. <h2><a name="functions"></a>Functions</h2>
  164. <dl class="function">
  165. <dt><a name="new"></a><strong>new</strong>&nbsp;()</dt>
  166. <dd>
  167. Construct a new luci.jsonc.parser instance.
  168. <h3>Usage:</h3>
  169. <code>parser = luci.jsonc.new()</code>
  170. <h3>Return value:</h3>
  171. A <code>luci.jsonc.parser</code> object representing a JSON-C tokener.
  172. </dd>
  173. <dt><a name="parse"></a><strong>parse</strong>&nbsp;(json)</dt>
  174. <dd>
  175. Parse a complete JSON string and convert it into a Lua data structure.
  176. <h3>Parameters</h3>
  177. <ul>
  178. <li>
  179. json: A string containing the JSON data to parse, must be either a
  180. JSON array or a JSON object.
  181. </li>
  182. </ul>
  183. <h3>Usage:</h3>
  184. <pre>data = luci.jsonc.parse('{ "name": "John", "age": 34 }')
  185. print(data.name) -- "John"</pre>
  186. <h3>Return value:</h3>
  187. On success, a table containing the parsed JSON data is returned, on
  188. failure the function returns <code>nil</code> and a string containing the reason of
  189. the parse error.
  190. <h3>See also:</h3>
  191. <ul>
  192. <li><a href="#stringify">
  193. stringify
  194. </a>
  195. </ul>
  196. </dd>
  197. <dt><a name="stringify"></a><strong>stringify</strong>&nbsp;(data, pretty)</dt>
  198. <dd>
  199. Convert given Lua data into a JSON string.
  200. This function recursively converts the given Lua data into a JSON string,
  201. ignoring any unsupported data. Lua tables are converted into JSON arrays if they
  202. only contain integer keys, mixed tables are turned into JSON objects with any
  203. existing numeric keys converted into strings.
  204. Lua functions, coroutines and userdata objects are ignored and Lua numbers are
  205. converted to integers if they do not contain fractional values.
  206. <h3>Parameters</h3>
  207. <ul>
  208. <li>
  209. data: The Lua data to convert, can be a table, string, boolean or number.
  210. </li>
  211. <li>
  212. pretty: A boolean value indicating whether the resulting JSON should be
  213. pretty printed.
  214. </li>
  215. </ul>
  216. <h3>Usage:</h3>
  217. <pre>json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } })
  218. print(json) -- '{"item":true,"values":[1,2,3]}'</pre>
  219. <h3>Return value:</h3>
  220. Returns a string containing the JSON representation of the given Lua
  221. data.
  222. <h3>See also:</h3>
  223. <ul>
  224. <li><a href="#parse">
  225. parse
  226. </a>
  227. </ul>
  228. </dd>
  229. </dl>
  230. </div> <!-- id="content" -->
  231. </div> <!-- id="main" -->
  232. <div id="about">
  233. <p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
  234. </div> <!-- id="about" -->
  235. </div> <!-- id="container" -->
  236. </body>
  237. </html>