luci-app-acme: convert to client side rendering
[project/luci.git] / docs / 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>