1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
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"/-->
14 <div id="product_logo"></div>
15 <div id="product_name"><big><b></b></big></div>
16 <div id="product_description"></div>
17 </div> <!-- id="product" -->
27 <li><a href="../index.html">Index</a></li>
38 <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
42 <a href="../modules/luci.http.html">luci.http</a>
46 <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
50 <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
54 <a href="../modules/luci.http.protocol.date.html">luci.http.protocol.date</a>
58 <a href="../modules/luci.http.protocol.mime.html">luci.http.protocol.mime</a>
62 <a href="../modules/luci.i18n.html">luci.i18n</a>
66 <a href="../modules/luci.ip.html">luci.ip</a>
70 <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
74 <a href="../modules/luci.json.html">luci.json</a>
77 <li><strong>luci.jsonc</strong></li>
80 <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
84 <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
88 <a href="../modules/luci.model.uci.html">luci.model.uci</a>
92 <a href="../modules/luci.rpcc.html">luci.rpcc</a>
96 <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
100 <a href="../modules/luci.sys.html">luci.sys</a>
104 <a href="../modules/luci.sys.init.html">luci.sys.init</a>
108 <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
112 <a href="../modules/luci.sys.net.html">luci.sys.net</a>
116 <a href="../modules/luci.sys.process.html">luci.sys.process</a>
120 <a href="../modules/luci.sys.user.html">luci.sys.user</a>
124 <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
128 <a href="../modules/luci.util.html">luci.util</a>
132 <a href="../modules/nixio.html">nixio</a>
136 <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
140 <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
144 <a href="../modules/nixio.File.html">nixio.File</a>
148 <a href="../modules/nixio.README.html">nixio.README</a>
152 <a href="../modules/nixio.Socket.html">nixio.Socket</a>
156 <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
160 <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
164 <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
168 <a href="../modules/nixio.bin.html">nixio.bin</a>
172 <a href="../modules/nixio.bit.html">nixio.bit</a>
176 <a href="../modules/nixio.crypto.html">nixio.crypto</a>
180 <a href="../modules/nixio.fs.html">nixio.fs</a>
195 </div><!-- id="navigation" -->
199 <h1>Class <code>luci.jsonc</code></h1>
202 LuCI JSON parsing and serialization library.
203 The luci.jsonc class is a high level Lua binding to the JSON-C library to
204 allow reading and writing JSON data with minimal overhead.</p>
213 <table class="function_list">
216 <td class="name" nowrap><a href="#new">new</a> ()</td>
219 Construct a new luci.jsonc.parser instance.</td>
223 <td class="name" nowrap><a href="#parse">parse</a> (json)</td>
226 Parse a complete JSON string and convert it into a Lua data structure.</td>
230 <td class="name" nowrap><a href="#stringify">stringify</a> (data, pretty)</td>
233 Convert given Lua data into a JSON string.</td>
247 <h2><a name="functions"></a>Functions</h2>
248 <dl class="function">
252 <dt><a name="new"></a><strong>new</strong> ()</dt>
256 Construct a new luci.jsonc.parser instance.
263 <code>parser = luci.jsonc.new()</code>
267 <h3>Return value:</h3>
268 A <code>luci.jsonc.parser</code> object representing a JSON-C tokener.
277 <dt><a name="parse"></a><strong>parse</strong> (json)</dt>
281 Parse a complete JSON string and convert it into a Lua data structure.
288 json: A string containing the JSON data to parse, must be either a
289 JSON array or a JSON object.
298 <pre>data = luci.jsonc.parse('{ "name": "John", "age": 34 }')
299 print(data.name) -- "John"</pre>
303 <h3>Return value:</h3>
304 On success, a table containing the parsed JSON data is returned, on
305 failure the function returns <code>nil</code> and a string containing the reason of
313 <li><a href="#stringify">
324 <dt><a name="stringify"></a><strong>stringify</strong> (data, pretty)</dt>
328 Convert given Lua data into a JSON string.
330 This function recursively converts the given Lua data into a JSON string,
331 ignoring any unsupported data. Lua tables are converted into JSON arrays if they
332 only contain integer keys, mixed tables are turned into JSON objects with any
333 existing numeric keys converted into strings.
335 Lua functions, coroutines and userdata objects are ignored and Lua numbers are
336 converted to integers if they do not contain fractional values.
344 data: The Lua data to convert, can be a table, string, boolean or number.
348 pretty: A boolean value indicating whether the resulting JSON should be
358 <pre>json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } })
359 print(json) -- '{"item":true,"values":[1,2,3]}'</pre>
363 <h3>Return value:</h3>
364 Returns a string containing the JSON representation of the given Lua
372 <li><a href="#parse">
387 </div> <!-- id="content" -->
389 </div> <!-- id="main" -->
392 <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>
393 </div> <!-- id="about" -->
395 </div> <!-- id="container" -->