documentation: regenerate documents from current code base
[project/luci.git] / documentation / api / modules / luci.jsonc.html
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
10 <body>
11 <div id="container">
12
13 <div id="product">
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" -->
18
19 <div id="main">
20
21 <div id="navigation">
22
23
24 <h1>LuaDoc</h1>
25 <ul>
26         
27         <li><a href="../index.html">Index</a></li>
28         
29 </ul>
30
31
32 <!-- Module list -->
33
34 <h1>Modules</h1>
35 <ul>
36
37         <li>
38                 <a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
39         </li>
40
41         <li>
42                 <a href="../modules/luci.http.html">luci.http</a>
43         </li>
44
45         <li>
46                 <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
47         </li>
48
49         <li>
50                 <a href="../modules/luci.http.date.html">luci.http.date</a>
51         </li>
52
53         <li>
54                 <a href="../modules/luci.http.mime.html">luci.http.mime</a>
55         </li>
56
57         <li>
58                 <a href="../modules/luci.i18n.html">luci.i18n</a>
59         </li>
60
61         <li>
62                 <a href="../modules/luci.ip.html">luci.ip</a>
63         </li>
64
65         <li>
66                 <a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
67         </li>
68
69         <li>
70                 <a href="../modules/luci.json.html">luci.json</a>
71         </li>
72
73         <li><strong>luci.jsonc</strong></li>
74         
75         <li>
76                 <a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
77         </li>
78
79         <li>
80                 <a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
81         </li>
82
83         <li>
84                 <a href="../modules/luci.model.uci.html">luci.model.uci</a>
85         </li>
86
87         <li>
88                 <a href="../modules/luci.rpcc.html">luci.rpcc</a>
89         </li>
90
91         <li>
92                 <a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
93         </li>
94
95         <li>
96                 <a href="../modules/luci.sys.html">luci.sys</a>
97         </li>
98
99         <li>
100                 <a href="../modules/luci.sys.init.html">luci.sys.init</a>
101         </li>
102
103         <li>
104                 <a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
105         </li>
106
107         <li>
108                 <a href="../modules/luci.sys.net.html">luci.sys.net</a>
109         </li>
110
111         <li>
112                 <a href="../modules/luci.sys.process.html">luci.sys.process</a>
113         </li>
114
115         <li>
116                 <a href="../modules/luci.sys.user.html">luci.sys.user</a>
117         </li>
118
119         <li>
120                 <a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
121         </li>
122
123         <li>
124                 <a href="../modules/luci.util.html">luci.util</a>
125         </li>
126
127         <li>
128                 <a href="../modules/nixio.html">nixio</a>
129         </li>
130
131         <li>
132                 <a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
133         </li>
134
135         <li>
136                 <a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
137         </li>
138
139         <li>
140                 <a href="../modules/nixio.File.html">nixio.File</a>
141         </li>
142
143         <li>
144                 <a href="../modules/nixio.README.html">nixio.README</a>
145         </li>
146
147         <li>
148                 <a href="../modules/nixio.Socket.html">nixio.Socket</a>
149         </li>
150
151         <li>
152                 <a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
153         </li>
154
155         <li>
156                 <a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
157         </li>
158
159         <li>
160                 <a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
161         </li>
162
163         <li>
164                 <a href="../modules/nixio.bin.html">nixio.bin</a>
165         </li>
166
167         <li>
168                 <a href="../modules/nixio.bit.html">nixio.bit</a>
169         </li>
170
171         <li>
172                 <a href="../modules/nixio.crypto.html">nixio.crypto</a>
173         </li>
174
175         <li>
176                 <a href="../modules/nixio.fs.html">nixio.fs</a>
177         </li>
178
179 </ul>
180
181
182
183 <!-- File list -->
184
185
186
187
188
189
190
191 </div><!-- id="navigation" -->
192
193 <div id="content">
194
195 <h1>Class <code>luci.jsonc</code></h1>
196
197 <p>
198  LuCI JSON parsing and serialization library. 
199  The luci.jsonc class is a high level Lua binding to the JSON-C library to 
200  allow reading and writing JSON data with minimal overhead.</p>
201
202
203
204
205
206
207
208 <h2>Functions</h2>
209 <table class="function_list">
210
211         <tr>
212         <td class="name" nowrap><a href="#new">new</a>&nbsp;()</td>
213         <td class="summary">
214  
215 Construct a new luci.jsonc.parser instance.</td>
216         </tr>
217
218         <tr>
219         <td class="name" nowrap><a href="#parse">parse</a>&nbsp;(json)</td>
220         <td class="summary">
221  
222 Parse a complete JSON string and convert it into a Lua data structure.</td>
223         </tr>
224
225         <tr>
226         <td class="name" nowrap><a href="#stringify">stringify</a>&nbsp;(data, pretty)</td>
227         <td class="summary">
228  
229 Convert given Lua data into a JSON string.</td>
230         </tr>
231
232 </table>
233
234
235
236
237
238
239 <br/>
240 <br/>
241
242
243 <h2><a name="functions"></a>Functions</h2>
244 <dl class="function">
245
246
247
248 <dt><a name="new"></a><strong>new</strong>&nbsp;()</dt>
249 <dd>
250
251  
252 Construct a new luci.jsonc.parser instance.
253
254
255
256
257
258 <h3>Usage:</h3>
259 <code>parser = luci.jsonc.new()</code>
260
261
262
263 <h3>Return value:</h3>
264 A <code>luci.jsonc.parser</code> object representing a JSON-C tokener.
265
266
267
268 </dd>
269
270
271
272
273 <dt><a name="parse"></a><strong>parse</strong>&nbsp;(json)</dt>
274 <dd>
275
276  
277 Parse a complete JSON string and convert it into a Lua data structure.
278
279
280 <h3>Parameters</h3>
281 <ul>
282         
283         <li>
284           json: A string containing the JSON data to parse, must be either a 
285         JSON array or a JSON object.
286         </li>
287         
288 </ul>
289
290
291
292
293 <h3>Usage:</h3>
294 <pre>data = luci.jsonc.parse('{ "name": "John", "age": 34 }') 
295 print(data.name)  -- "John"</pre>
296
297
298
299 <h3>Return value:</h3>
300 On success, a table containing the parsed JSON data is returned, on 
301         failure the function returns <code>nil</code> and a string containing the reason of 
302         the parse error.
303
304
305
306 <h3>See also:</h3>
307 <ul>
308         
309         <li><a href="#stringify">
310                 stringify
311         </a>
312         
313 </ul>
314
315 </dd>
316
317
318
319
320 <dt><a name="stringify"></a><strong>stringify</strong>&nbsp;(data, pretty)</dt>
321 <dd>
322
323  
324 Convert given Lua data into a JSON string. 
325  
326 This function recursively converts the given Lua data into a JSON string, 
327 ignoring any unsupported data. Lua tables are converted into JSON arrays if they 
328 only contain integer keys, mixed tables are turned into JSON objects with any 
329 existing numeric keys converted into strings. 
330  
331 Lua functions, coroutines and userdata objects are ignored and Lua numbers are 
332 converted to integers if they do not contain fractional values. 
333
334
335
336 <h3>Parameters</h3>
337 <ul>
338         
339         <li>
340           data: The Lua data to convert, can be a table, string, boolean or number.
341         </li>
342         
343         <li>
344           pretty: A boolean value indicating whether the resulting JSON should be 
345         pretty printed.
346         </li>
347         
348 </ul>
349
350
351
352
353 <h3>Usage:</h3>
354 <pre>json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } }) 
355 print(json)  -- '{"item":true,"values":[1,2,3]}'</pre>
356
357
358
359 <h3>Return value:</h3>
360 Returns a string containing the JSON representation of the given Lua 
361         data.
362
363
364
365 <h3>See also:</h3>
366 <ul>
367         
368         <li><a href="#parse">
369                 parse
370         </a>
371         
372 </ul>
373
374 </dd>
375
376
377 </dl>
378
379
380
381
382
383 </div> <!-- id="content" -->
384
385 </div> <!-- id="main" -->
386
387 <div id="about">
388         <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>
389 </div> <!-- id="about" -->
390
391 </div> <!-- id="container" -->
392 </body>
393 </html>