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