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