Imported Upstream version 1.2.4
[platform/upstream/json-glib.git] / doc / reference / html / JsonReader.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>JsonReader: JSON-GLib Reference Manual</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="JSON-GLib Reference Manual">
8 <link rel="up" href="ch02.html" title="Parser">
9 <link rel="prev" href="JsonParser.html" title="JsonParser">
10 <link rel="next" href="JsonPath.html" title="JsonPath">
11 <meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts">
17 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
18                   <a href="#JsonReader.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
19                   <a href="#JsonReader.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
20                   <a href="#JsonReader.properties" class="shortcut">Properties</a></span>
21 </td>
22 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
23 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
24 <td><a accesskey="p" href="JsonParser.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
25 <td><a accesskey="n" href="JsonPath.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
26 </tr></table>
27 <div class="refentry">
28 <a name="JsonReader"></a><div class="titlepage"></div>
29 <div class="refnamediv"><table width="100%"><tr>
30 <td valign="top">
31 <h2><span class="refentrytitle"><a name="JsonReader.top_of_page"></a>JsonReader</span></h2>
32 <p>JsonReader — A cursor-based parser</p>
33 </td>
34 <td class="gallery_image" valign="top" align="right"></td>
35 </tr></table></div>
36 <div class="refsect1">
37 <a name="JsonReader.functions"></a><h2>Functions</h2>
38 <div class="informaltable"><table class="informaltable" width="100%" border="0">
39 <colgroup>
40 <col width="150px" class="functions_return">
41 <col class="functions_name">
42 </colgroup>
43 <tbody>
44 <tr>
45 <td class="function_type">
46 <a class="link" href="JsonReader.html" title="JsonReader"><span class="returnvalue">JsonReader</span></a> *
47 </td>
48 <td class="function_name">
49 <a class="link" href="JsonReader.html#json-reader-new" title="json_reader_new ()">json_reader_new</a> <span class="c_punctuation">()</span>
50 </td>
51 </tr>
52 <tr>
53 <td class="function_type">
54 <span class="returnvalue">void</span>
55 </td>
56 <td class="function_name">
57 <a class="link" href="JsonReader.html#json-reader-set-root" title="json_reader_set_root ()">json_reader_set_root</a> <span class="c_punctuation">()</span>
58 </td>
59 </tr>
60 <tr>
61 <td class="function_type">
62 <span class="returnvalue">gboolean</span>
63 </td>
64 <td class="function_name">
65 <a class="link" href="JsonReader.html#json-reader-read-element" title="json_reader_read_element ()">json_reader_read_element</a> <span class="c_punctuation">()</span>
66 </td>
67 </tr>
68 <tr>
69 <td class="function_type">
70 <span class="returnvalue">void</span>
71 </td>
72 <td class="function_name">
73 <a class="link" href="JsonReader.html#json-reader-end-element" title="json_reader_end_element ()">json_reader_end_element</a> <span class="c_punctuation">()</span>
74 </td>
75 </tr>
76 <tr>
77 <td class="function_type">
78 <span class="returnvalue">gboolean</span>
79 </td>
80 <td class="function_name">
81 <a class="link" href="JsonReader.html#json-reader-is-array" title="json_reader_is_array ()">json_reader_is_array</a> <span class="c_punctuation">()</span>
82 </td>
83 </tr>
84 <tr>
85 <td class="function_type">
86 <span class="returnvalue">gint</span>
87 </td>
88 <td class="function_name">
89 <a class="link" href="JsonReader.html#json-reader-count-elements" title="json_reader_count_elements ()">json_reader_count_elements</a> <span class="c_punctuation">()</span>
90 </td>
91 </tr>
92 <tr>
93 <td class="function_type">
94 <span class="returnvalue">gboolean</span>
95 </td>
96 <td class="function_name">
97 <a class="link" href="JsonReader.html#json-reader-read-member" title="json_reader_read_member ()">json_reader_read_member</a> <span class="c_punctuation">()</span>
98 </td>
99 </tr>
100 <tr>
101 <td class="function_type">
102 <span class="returnvalue">void</span>
103 </td>
104 <td class="function_name">
105 <a class="link" href="JsonReader.html#json-reader-end-member" title="json_reader_end_member ()">json_reader_end_member</a> <span class="c_punctuation">()</span>
106 </td>
107 </tr>
108 <tr>
109 <td class="function_type">
110 <span class="returnvalue">gboolean</span>
111 </td>
112 <td class="function_name">
113 <a class="link" href="JsonReader.html#json-reader-is-object" title="json_reader_is_object ()">json_reader_is_object</a> <span class="c_punctuation">()</span>
114 </td>
115 </tr>
116 <tr>
117 <td class="function_type">
118 <span class="returnvalue">gint</span>
119 </td>
120 <td class="function_name">
121 <a class="link" href="JsonReader.html#json-reader-count-members" title="json_reader_count_members ()">json_reader_count_members</a> <span class="c_punctuation">()</span>
122 </td>
123 </tr>
124 <tr>
125 <td class="function_type">
126 <span class="returnvalue">gchar</span> **
127 </td>
128 <td class="function_name">
129 <a class="link" href="JsonReader.html#json-reader-list-members" title="json_reader_list_members ()">json_reader_list_members</a> <span class="c_punctuation">()</span>
130 </td>
131 </tr>
132 <tr>
133 <td class="function_type">const <span class="returnvalue">gchar</span> *
134 </td>
135 <td class="function_name">
136 <a class="link" href="JsonReader.html#json-reader-get-member-name" title="json_reader_get_member_name ()">json_reader_get_member_name</a> <span class="c_punctuation">()</span>
137 </td>
138 </tr>
139 <tr>
140 <td class="function_type">
141 <span class="returnvalue">gboolean</span>
142 </td>
143 <td class="function_name">
144 <a class="link" href="JsonReader.html#json-reader-is-value" title="json_reader_is_value ()">json_reader_is_value</a> <span class="c_punctuation">()</span>
145 </td>
146 </tr>
147 <tr>
148 <td class="function_type">
149 <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="returnvalue">JsonNode</span></a> *
150 </td>
151 <td class="function_name">
152 <a class="link" href="JsonReader.html#json-reader-get-value" title="json_reader_get_value ()">json_reader_get_value</a> <span class="c_punctuation">()</span>
153 </td>
154 </tr>
155 <tr>
156 <td class="function_type">
157 <span class="returnvalue">gint64</span>
158 </td>
159 <td class="function_name">
160 <a class="link" href="JsonReader.html#json-reader-get-int-value" title="json_reader_get_int_value ()">json_reader_get_int_value</a> <span class="c_punctuation">()</span>
161 </td>
162 </tr>
163 <tr>
164 <td class="function_type">
165 <span class="returnvalue">gdouble</span>
166 </td>
167 <td class="function_name">
168 <a class="link" href="JsonReader.html#json-reader-get-double-value" title="json_reader_get_double_value ()">json_reader_get_double_value</a> <span class="c_punctuation">()</span>
169 </td>
170 </tr>
171 <tr>
172 <td class="function_type">const <span class="returnvalue">gchar</span> *
173 </td>
174 <td class="function_name">
175 <a class="link" href="JsonReader.html#json-reader-get-string-value" title="json_reader_get_string_value ()">json_reader_get_string_value</a> <span class="c_punctuation">()</span>
176 </td>
177 </tr>
178 <tr>
179 <td class="function_type">
180 <span class="returnvalue">gboolean</span>
181 </td>
182 <td class="function_name">
183 <a class="link" href="JsonReader.html#json-reader-get-boolean-value" title="json_reader_get_boolean_value ()">json_reader_get_boolean_value</a> <span class="c_punctuation">()</span>
184 </td>
185 </tr>
186 <tr>
187 <td class="function_type">
188 <span class="returnvalue">gboolean</span>
189 </td>
190 <td class="function_name">
191 <a class="link" href="JsonReader.html#json-reader-get-null-value" title="json_reader_get_null_value ()">json_reader_get_null_value</a> <span class="c_punctuation">()</span>
192 </td>
193 </tr>
194 <tr>
195 <td class="function_type">const <span class="returnvalue">GError</span> *
196 </td>
197 <td class="function_name">
198 <a class="link" href="JsonReader.html#json-reader-get-error" title="json_reader_get_error ()">json_reader_get_error</a> <span class="c_punctuation">()</span>
199 </td>
200 </tr>
201 </tbody>
202 </table></div>
203 </div>
204 <div class="refsect1">
205 <a name="JsonReader.properties"></a><h2>Properties</h2>
206 <div class="informaltable"><table class="informaltable" border="0">
207 <colgroup>
208 <col width="150px" class="properties_type">
209 <col width="300px" class="properties_name">
210 <col width="200px" class="properties_flags">
211 </colgroup>
212 <tbody><tr>
213 <td class="property_type">
214 <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> *</td>
215 <td class="property_name"><a class="link" href="JsonReader.html#JsonReader--root" title="The “root” property">root</a></td>
216 <td class="property_flags">Read / Write / Construct</td>
217 </tr></tbody>
218 </table></div>
219 </div>
220 <div class="refsect1">
221 <a name="JsonReader.other"></a><h2>Types and Values</h2>
222 <div class="informaltable"><table class="informaltable" width="100%" border="0">
223 <colgroup>
224 <col width="150px" class="name">
225 <col class="description">
226 </colgroup>
227 <tbody>
228 <tr>
229 <td class="datatype_keyword">struct</td>
230 <td class="function_name"><a class="link" href="JsonReader.html#JsonReader-struct" title="struct JsonReader">JsonReader</a></td>
231 </tr>
232 <tr>
233 <td class="datatype_keyword">struct</td>
234 <td class="function_name"><a class="link" href="JsonReader.html#JsonReaderClass" title="struct JsonReaderClass">JsonReaderClass</a></td>
235 </tr>
236 <tr>
237 <td class="datatype_keyword">enum</td>
238 <td class="function_name"><a class="link" href="JsonReader.html#JsonReaderError" title="enum JsonReaderError">JsonReaderError</a></td>
239 </tr>
240 <tr>
241 <td class="define_keyword">#define</td>
242 <td class="function_name"><a class="link" href="JsonReader.html#JSON-READER-ERROR:CAPS" title="JSON_READER_ERROR">JSON_READER_ERROR</a></td>
243 </tr>
244 </tbody>
245 </table></div>
246 </div>
247 <div class="refsect1">
248 <a name="JsonReader.object-hierarchy"></a><h2>Object Hierarchy</h2>
249 <pre class="screen">    GObject
250     <span class="lineart">╰──</span> JsonReader
251 </pre>
252 </div>
253 <div class="refsect1">
254 <a name="JsonReader.description"></a><h2>Description</h2>
255 <p><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> provides a simple, cursor-based API for parsing a JSON DOM. It
256 is similar, in spirit, to the XML Reader API.</p>
257 <p>In case of error, <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> will be set in an error state; all subsequent
258 calls will simply be ignored until a function that resets the error state is
259 called, e.g.:</p>
260 <div class="informalexample">
261   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
262     <tbody>
263       <tr>
264         <td class="listing_lines" align="right"><pre>1
265 2
266 3
267 4
268 5
269 6
270 7
271 8
272 9
273 10</pre></td>
274         <td class="listing_code"><pre class="programlisting"><span class="comment">// ask for the 7th element; if the element does not exist, the</span>
275 <span class="comment">// reader will be put in an error state</span>
276 <span class="function"><a href="JsonReader.html#json-reader-read-element">json_reader_read_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="number">6</span><span class="symbol">);</span>
277
278 <span class="comment">// in case of error, this will return NULL, otherwise it will</span>
279 <span class="comment">// return the value of the element</span>
280 <span class="normal">str </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">);</span>
281
282 <span class="comment">// this function resets the error state if any was set</span>
283 <span class="function"><a href="JsonReader.html#json-reader-end-element">json_reader_end_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
284       </tr>
285     </tbody>
286   </table>
287 </div>
288
289 <p></p>
290 <p>If you want to detect the error state as soon as possible, you can use
291 <a class="link" href="JsonReader.html#json-reader-get-error" title="json_reader_get_error ()"><code class="function">json_reader_get_error()</code></a>:</p>
292 <div class="informalexample">
293   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
294     <tbody>
295       <tr>
296         <td class="listing_lines" align="right"><pre>1
297 2
298 3
299 4
300 5
301 6
302 7</pre></td>
303         <td class="listing_code"><pre class="programlisting"><span class="comment">// like the example above, but in this case we print out the</span>
304 <span class="comment">// error immediately</span>
305 <span class="keyword">if</span><span class="normal"> </span><span class="symbol">(!</span><span class="function"><a href="JsonReader.html#json-reader-read-element">json_reader_read_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="number">6</span><span class="symbol">))</span>
306 <span class="normal">  </span><span class="cbracket">{</span>
307 <span class="normal">    </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-error">json_reader_get_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
308 <span class="normal">    </span><span class="function">g_print</span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Unable to read the element: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
309 <span class="normal">  </span><span class="cbracket">}</span></pre></td>
310       </tr>
311     </tbody>
312   </table>
313 </div>
314
315 <p></p>
316 <p><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is available since JSON-GLib 0.12.</p>
317 </div>
318 <div class="refsect1">
319 <a name="JsonReader.functions_details"></a><h2>Functions</h2>
320 <div class="refsect2">
321 <a name="json-reader-new"></a><h3>json_reader_new ()</h3>
322 <pre class="programlisting"><a class="link" href="JsonReader.html" title="JsonReader"><span class="returnvalue">JsonReader</span></a> *
323 json_reader_new (<em class="parameter"><code><a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> *node</code></em>);</pre>
324 <p>Creates a new <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>. You can use this object to read the contents of
325 the JSON tree starting from <em class="parameter"><code>node</code></em>
326 </p>
327 <div class="refsect3">
328 <a name="json-reader-new.parameters"></a><h4>Parameters</h4>
329 <div class="informaltable"><table class="informaltable" width="100%" border="0">
330 <colgroup>
331 <col width="150px" class="parameters_name">
332 <col class="parameters_description">
333 <col width="200px" class="parameters_annotations">
334 </colgroup>
335 <tbody><tr>
336 <td class="parameter_name"><p>node</p></td>
337 <td class="parameter_description"><p> a <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a>, or <code class="literal">NULL</code>. </p></td>
338 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
339 </tr></tbody>
340 </table></div>
341 </div>
342 <div class="refsect3">
343 <a name="json-reader-new.returns"></a><h4>Returns</h4>
344 <p> the newly created <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>. Use <code class="function">g_object_unref()</code> to
345 release the allocated resources when done</p>
346 </div>
347 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
348 </div>
349 <hr>
350 <div class="refsect2">
351 <a name="json-reader-set-root"></a><h3>json_reader_set_root ()</h3>
352 <pre class="programlisting"><span class="returnvalue">void</span>
353 json_reader_set_root (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>,
354                       <em class="parameter"><code><a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> *root</code></em>);</pre>
355 <p>Sets the root <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> to be read by <em class="parameter"><code>reader</code></em>
356 . The <em class="parameter"><code>reader</code></em>
357  will take
358 a copy of <em class="parameter"><code>root</code></em>
359 </p>
360 <p>If another <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> is currently set as root, it will be replaced.</p>
361 <div class="refsect3">
362 <a name="json-reader-set-root.parameters"></a><h4>Parameters</h4>
363 <div class="informaltable"><table class="informaltable" width="100%" border="0">
364 <colgroup>
365 <col width="150px" class="parameters_name">
366 <col class="parameters_description">
367 <col width="200px" class="parameters_annotations">
368 </colgroup>
369 <tbody>
370 <tr>
371 <td class="parameter_name"><p>reader</p></td>
372 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
373 <td class="parameter_annotations"> </td>
374 </tr>
375 <tr>
376 <td class="parameter_name"><p>root</p></td>
377 <td class="parameter_description"><p> a <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a>. </p></td>
378 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
379 </tr>
380 </tbody>
381 </table></div>
382 </div>
383 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
384 </div>
385 <hr>
386 <div class="refsect2">
387 <a name="json-reader-read-element"></a><h3>json_reader_read_element ()</h3>
388 <pre class="programlisting"><span class="returnvalue">gboolean</span>
389 json_reader_read_element (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>,
390                           <em class="parameter"><code><span class="type">guint</span> index_</code></em>);</pre>
391 <p>Advances the cursor of <em class="parameter"><code>reader</code></em>
392  to the element <em class="parameter"><code>index_</code></em>
393  of the array
394 or the object at the current position.</p>
395 <p>You can use the json_reader_get_value* family of functions to retrieve
396 the value of the element; for instance:</p>
397 <div class="informalexample">
398   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
399     <tbody>
400       <tr>
401         <td class="listing_lines" align="right"><pre>1
402 2</pre></td>
403         <td class="listing_code"><pre class="programlisting"><span class="function"><a href="JsonReader.html#json-reader-read-element">json_reader_read_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
404 <span class="normal">int_value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-int-value">json_reader_get_int_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
405       </tr>
406     </tbody>
407   </table>
408 </div>
409
410 <p></p>
411 <p>After reading the value, <a class="link" href="JsonReader.html#json-reader-end-element" title="json_reader_end_element ()"><code class="function">json_reader_end_element()</code></a> should be called to
412 reposition the cursor inside the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>, e.g.:</p>
413 <div class="informalexample">
414   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
415     <tbody>
416       <tr>
417         <td class="listing_lines" align="right"><pre>1
418 2
419 3
420 4
421 5
422 6
423 7</pre></td>
424         <td class="listing_code"><pre class="programlisting"><span class="function"><a href="JsonReader.html#json-reader-read-element">json_reader_read_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">);</span>
425 <span class="normal">str_value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
426 <span class="function"><a href="JsonReader.html#json-reader-end-element">json_reader_end_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
427
428 <span class="function"><a href="JsonReader.html#json-reader-read-element">json_reader_read_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="number">2</span><span class="symbol">);</span>
429 <span class="normal">str_value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
430 <span class="function"><a href="JsonReader.html#json-reader-end-element">json_reader_end_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
431       </tr>
432     </tbody>
433   </table>
434 </div>
435
436 <p></p>
437 <p>If <em class="parameter"><code>reader</code></em>
438  is not currently on an array or an object, or if the <em class="parameter"><code>index_</code></em>
439  is
440 bigger than the size of the array or the object, the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> will be
441 put in an error state until <a class="link" href="JsonReader.html#json-reader-end-element" title="json_reader_end_element ()"><code class="function">json_reader_end_element()</code></a> is called. This means
442 that if used conditionally, <a class="link" href="JsonReader.html#json-reader-end-element" title="json_reader_end_element ()"><code class="function">json_reader_end_element()</code></a> must be called on both
443 code paths:</p>
444 <div class="informalexample">
445   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
446     <tbody>
447       <tr>
448         <td class="listing_lines" align="right"><pre>1
449 2
450 3
451 4
452 5
453 6
454 7
455 8
456 9</pre></td>
457         <td class="listing_code"><pre class="programlisting"><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(!</span><span class="function"><a href="JsonReader.html#json-reader-read-element">json_reader_read_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="number">1</span><span class="symbol">))</span>
458 <span class="normal">  </span><span class="cbracket">{</span>
459 <span class="normal">    </span><span class="function"><a href="JsonReader.html#json-reader-end-element">json_reader_end_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
460 <span class="normal">    </span><span class="function">g_set_error</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">,</span><span class="normal"> …</span><span class="symbol">);</span>
461 <span class="normal">    </span><span class="keyword">return</span><span class="normal"> FALSE</span><span class="symbol">;</span>
462 <span class="normal">  </span><span class="cbracket">}</span>
463
464 <span class="normal">str_value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
465 <span class="function"><a href="JsonReader.html#json-reader-end-element">json_reader_end_element</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
466       </tr>
467     </tbody>
468   </table>
469 </div>
470
471 <p></p>
472 <div class="refsect3">
473 <a name="json-reader-read-element.parameters"></a><h4>Parameters</h4>
474 <div class="informaltable"><table class="informaltable" width="100%" border="0">
475 <colgroup>
476 <col width="150px" class="parameters_name">
477 <col class="parameters_description">
478 <col width="200px" class="parameters_annotations">
479 </colgroup>
480 <tbody>
481 <tr>
482 <td class="parameter_name"><p>reader</p></td>
483 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
484 <td class="parameter_annotations"> </td>
485 </tr>
486 <tr>
487 <td class="parameter_name"><p>index_</p></td>
488 <td class="parameter_description"><p>the index of the element</p></td>
489 <td class="parameter_annotations"> </td>
490 </tr>
491 </tbody>
492 </table></div>
493 </div>
494 <div class="refsect3">
495 <a name="json-reader-read-element.returns"></a><h4>Returns</h4>
496 <p> <code class="literal">TRUE</code> on success, and <code class="literal">FALSE</code> otherwise</p>
497 </div>
498 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
499 </div>
500 <hr>
501 <div class="refsect2">
502 <a name="json-reader-end-element"></a><h3>json_reader_end_element ()</h3>
503 <pre class="programlisting"><span class="returnvalue">void</span>
504 json_reader_end_element (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
505 <p>Moves the cursor back to the previous node after being positioned
506 inside an array</p>
507 <p>This function resets the error state of <em class="parameter"><code>reader</code></em>
508 , if any was set</p>
509 <div class="refsect3">
510 <a name="json-reader-end-element.parameters"></a><h4>Parameters</h4>
511 <div class="informaltable"><table class="informaltable" width="100%" border="0">
512 <colgroup>
513 <col width="150px" class="parameters_name">
514 <col class="parameters_description">
515 <col width="200px" class="parameters_annotations">
516 </colgroup>
517 <tbody><tr>
518 <td class="parameter_name"><p>reader</p></td>
519 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
520 <td class="parameter_annotations"> </td>
521 </tr></tbody>
522 </table></div>
523 </div>
524 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
525 </div>
526 <hr>
527 <div class="refsect2">
528 <a name="json-reader-is-array"></a><h3>json_reader_is_array ()</h3>
529 <pre class="programlisting"><span class="returnvalue">gboolean</span>
530 json_reader_is_array (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
531 <p>Checks whether the <em class="parameter"><code>reader</code></em>
532  is currently on an array</p>
533 <div class="refsect3">
534 <a name="json-reader-is-array.parameters"></a><h4>Parameters</h4>
535 <div class="informaltable"><table class="informaltable" width="100%" border="0">
536 <colgroup>
537 <col width="150px" class="parameters_name">
538 <col class="parameters_description">
539 <col width="200px" class="parameters_annotations">
540 </colgroup>
541 <tbody><tr>
542 <td class="parameter_name"><p>reader</p></td>
543 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
544 <td class="parameter_annotations"> </td>
545 </tr></tbody>
546 </table></div>
547 </div>
548 <div class="refsect3">
549 <a name="json-reader-is-array.returns"></a><h4>Returns</h4>
550 <p> <code class="literal">TRUE</code> if the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is on an array, and <code class="literal">FALSE</code>
551 otherwise</p>
552 </div>
553 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
554 </div>
555 <hr>
556 <div class="refsect2">
557 <a name="json-reader-count-elements"></a><h3>json_reader_count_elements ()</h3>
558 <pre class="programlisting"><span class="returnvalue">gint</span>
559 json_reader_count_elements (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
560 <p>Counts the elements of the current position, if <em class="parameter"><code>reader</code></em>
561  is
562 positioned on an array</p>
563 <div class="refsect3">
564 <a name="json-reader-count-elements.parameters"></a><h4>Parameters</h4>
565 <div class="informaltable"><table class="informaltable" width="100%" border="0">
566 <colgroup>
567 <col width="150px" class="parameters_name">
568 <col class="parameters_description">
569 <col width="200px" class="parameters_annotations">
570 </colgroup>
571 <tbody><tr>
572 <td class="parameter_name"><p>reader</p></td>
573 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
574 <td class="parameter_annotations"> </td>
575 </tr></tbody>
576 </table></div>
577 </div>
578 <div class="refsect3">
579 <a name="json-reader-count-elements.returns"></a><h4>Returns</h4>
580 <p> the number of elements, or -1. In case of failure
581 the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is set in an error state</p>
582 </div>
583 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
584 </div>
585 <hr>
586 <div class="refsect2">
587 <a name="json-reader-read-member"></a><h3>json_reader_read_member ()</h3>
588 <pre class="programlisting"><span class="returnvalue">gboolean</span>
589 json_reader_read_member (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>,
590                          <em class="parameter"><code>const <span class="type">gchar</span> *member_name</code></em>);</pre>
591 <p>Advances the cursor of <em class="parameter"><code>reader</code></em>
592  to the <em class="parameter"><code>member_name</code></em>
593  of the object at the
594 current position.</p>
595 <p>You can use the json_reader_get_value* family of functions to retrieve
596 the value of the member; for instance:</p>
597 <div class="informalexample">
598   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
599     <tbody>
600       <tr>
601         <td class="listing_lines" align="right"><pre>1
602 2</pre></td>
603         <td class="listing_code"><pre class="programlisting"><span class="function"><a href="JsonReader.html#json-reader-read-member">json_reader_read_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"width"</span><span class="symbol">);</span>
604 <span class="normal">width </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-int-value">json_reader_get_int_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
605       </tr>
606     </tbody>
607   </table>
608 </div>
609
610 <p></p>
611 <p>After reading the value, <a class="link" href="JsonReader.html#json-reader-end-member" title="json_reader_end_member ()"><code class="function">json_reader_end_member()</code></a> should be called to
612 reposition the cursor inside the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>, e.g.:</p>
613 <div class="informalexample">
614   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
615     <tbody>
616       <tr>
617         <td class="listing_lines" align="right"><pre>1
618 2
619 3
620 4
621 5
622 6
623 7</pre></td>
624         <td class="listing_code"><pre class="programlisting"><span class="function"><a href="JsonReader.html#json-reader-read-member">json_reader_read_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"author"</span><span class="symbol">);</span>
625 <span class="normal">author </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
626 <span class="function"><a href="JsonReader.html#json-reader-end-member">json_reader_end_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
627
628 <span class="function"><a href="JsonReader.html#json-reader-read-member">json_reader_read_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"title"</span><span class="symbol">);</span>
629 <span class="normal">title </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
630 <span class="function"><a href="JsonReader.html#json-reader-end-member">json_reader_end_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
631       </tr>
632     </tbody>
633   </table>
634 </div>
635
636 <p></p>
637 <p>If <em class="parameter"><code>reader</code></em>
638  is not currently on an object, or if the <em class="parameter"><code>member_name</code></em>
639  is not
640 defined in the object, the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> will be put in an error state until
641 <a class="link" href="JsonReader.html#json-reader-end-member" title="json_reader_end_member ()"><code class="function">json_reader_end_member()</code></a> is called. This means that if used conditionally,
642 <a class="link" href="JsonReader.html#json-reader-end-member" title="json_reader_end_member ()"><code class="function">json_reader_end_member()</code></a> must be called on both code paths:</p>
643 <div class="informalexample">
644   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
645     <tbody>
646       <tr>
647         <td class="listing_lines" align="right"><pre>1
648 2
649 3
650 4
651 5
652 6
653 7
654 8
655 9</pre></td>
656         <td class="listing_code"><pre class="programlisting"><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(!</span><span class="function"><a href="JsonReader.html#json-reader-read-member">json_reader_read_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"title"</span><span class="symbol">))</span>
657 <span class="normal">  </span><span class="cbracket">{</span>
658 <span class="normal">    </span><span class="function"><a href="JsonReader.html#json-reader-end-member">json_reader_end_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
659 <span class="normal">    </span><span class="function">g_set_error</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">,</span><span class="normal"> …</span><span class="symbol">);</span>
660 <span class="normal">    </span><span class="keyword">return</span><span class="normal"> FALSE</span><span class="symbol">;</span>
661 <span class="normal">  </span><span class="cbracket">}</span>
662
663 <span class="normal">str_value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="JsonReader.html#json-reader-get-string-value">json_reader_get_string_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span>
664 <span class="function"><a href="JsonReader.html#json-reader-end-member">json_reader_end_member</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reader</span><span class="symbol">);</span></pre></td>
665       </tr>
666     </tbody>
667   </table>
668 </div>
669
670 <p></p>
671 <div class="refsect3">
672 <a name="json-reader-read-member.parameters"></a><h4>Parameters</h4>
673 <div class="informaltable"><table class="informaltable" width="100%" border="0">
674 <colgroup>
675 <col width="150px" class="parameters_name">
676 <col class="parameters_description">
677 <col width="200px" class="parameters_annotations">
678 </colgroup>
679 <tbody>
680 <tr>
681 <td class="parameter_name"><p>reader</p></td>
682 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
683 <td class="parameter_annotations"> </td>
684 </tr>
685 <tr>
686 <td class="parameter_name"><p>member_name</p></td>
687 <td class="parameter_description"><p>the name of the member to read</p></td>
688 <td class="parameter_annotations"> </td>
689 </tr>
690 </tbody>
691 </table></div>
692 </div>
693 <div class="refsect3">
694 <a name="json-reader-read-member.returns"></a><h4>Returns</h4>
695 <p> <code class="literal">TRUE</code> on success, and <code class="literal">FALSE</code> otherwise</p>
696 </div>
697 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
698 </div>
699 <hr>
700 <div class="refsect2">
701 <a name="json-reader-end-member"></a><h3>json_reader_end_member ()</h3>
702 <pre class="programlisting"><span class="returnvalue">void</span>
703 json_reader_end_member (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
704 <p>Moves the cursor back to the previous node after being positioned
705 inside an object</p>
706 <p>This function resets the error state of <em class="parameter"><code>reader</code></em>
707 , if any was set</p>
708 <div class="refsect3">
709 <a name="json-reader-end-member.parameters"></a><h4>Parameters</h4>
710 <div class="informaltable"><table class="informaltable" width="100%" border="0">
711 <colgroup>
712 <col width="150px" class="parameters_name">
713 <col class="parameters_description">
714 <col width="200px" class="parameters_annotations">
715 </colgroup>
716 <tbody><tr>
717 <td class="parameter_name"><p>reader</p></td>
718 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
719 <td class="parameter_annotations"> </td>
720 </tr></tbody>
721 </table></div>
722 </div>
723 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
724 </div>
725 <hr>
726 <div class="refsect2">
727 <a name="json-reader-is-object"></a><h3>json_reader_is_object ()</h3>
728 <pre class="programlisting"><span class="returnvalue">gboolean</span>
729 json_reader_is_object (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
730 <p>Checks whether the <em class="parameter"><code>reader</code></em>
731  is currently on an object</p>
732 <div class="refsect3">
733 <a name="json-reader-is-object.parameters"></a><h4>Parameters</h4>
734 <div class="informaltable"><table class="informaltable" width="100%" border="0">
735 <colgroup>
736 <col width="150px" class="parameters_name">
737 <col class="parameters_description">
738 <col width="200px" class="parameters_annotations">
739 </colgroup>
740 <tbody><tr>
741 <td class="parameter_name"><p>reader</p></td>
742 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
743 <td class="parameter_annotations"> </td>
744 </tr></tbody>
745 </table></div>
746 </div>
747 <div class="refsect3">
748 <a name="json-reader-is-object.returns"></a><h4>Returns</h4>
749 <p> <code class="literal">TRUE</code> if the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is on an object, and <code class="literal">FALSE</code>
750 otherwise</p>
751 </div>
752 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
753 </div>
754 <hr>
755 <div class="refsect2">
756 <a name="json-reader-count-members"></a><h3>json_reader_count_members ()</h3>
757 <pre class="programlisting"><span class="returnvalue">gint</span>
758 json_reader_count_members (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
759 <p>Counts the members of the current position, if <em class="parameter"><code>reader</code></em>
760  is
761 positioned on an object</p>
762 <div class="refsect3">
763 <a name="json-reader-count-members.parameters"></a><h4>Parameters</h4>
764 <div class="informaltable"><table class="informaltable" width="100%" border="0">
765 <colgroup>
766 <col width="150px" class="parameters_name">
767 <col class="parameters_description">
768 <col width="200px" class="parameters_annotations">
769 </colgroup>
770 <tbody><tr>
771 <td class="parameter_name"><p>reader</p></td>
772 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
773 <td class="parameter_annotations"> </td>
774 </tr></tbody>
775 </table></div>
776 </div>
777 <div class="refsect3">
778 <a name="json-reader-count-members.returns"></a><h4>Returns</h4>
779 <p> the number of members, or -1. In case of failure
780 the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is set in an error state</p>
781 </div>
782 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
783 </div>
784 <hr>
785 <div class="refsect2">
786 <a name="json-reader-list-members"></a><h3>json_reader_list_members ()</h3>
787 <pre class="programlisting"><span class="returnvalue">gchar</span> **
788 json_reader_list_members (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
789 <p>Retrieves a list of member names from the current position, if <em class="parameter"><code>reader</code></em>
790
791 is positioned on an object.</p>
792 <div class="refsect3">
793 <a name="json-reader-list-members.parameters"></a><h4>Parameters</h4>
794 <div class="informaltable"><table class="informaltable" width="100%" border="0">
795 <colgroup>
796 <col width="150px" class="parameters_name">
797 <col class="parameters_description">
798 <col width="200px" class="parameters_annotations">
799 </colgroup>
800 <tbody><tr>
801 <td class="parameter_name"><p>reader</p></td>
802 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
803 <td class="parameter_annotations"> </td>
804 </tr></tbody>
805 </table></div>
806 </div>
807 <div class="refsect3">
808 <a name="json-reader-list-members.returns"></a><h4>Returns</h4>
809 <p> a newly allocated, <code class="literal">NULL</code>-terminated
810 array of strings holding the members name. Use <code class="function">g_strfreev()</code> when
811 done. </p>
812 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
813 </div>
814 <p class="since">Since: <a class="link" href="ix08.html#api-index-0.14">0.14</a></p>
815 </div>
816 <hr>
817 <div class="refsect2">
818 <a name="json-reader-get-member-name"></a><h3>json_reader_get_member_name ()</h3>
819 <pre class="programlisting">const <span class="returnvalue">gchar</span> *
820 json_reader_get_member_name (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
821 <p>Retrieves the name of the current member.</p>
822 <div class="refsect3">
823 <a name="json-reader-get-member-name.parameters"></a><h4>Parameters</h4>
824 <div class="informaltable"><table class="informaltable" width="100%" border="0">
825 <colgroup>
826 <col width="150px" class="parameters_name">
827 <col class="parameters_description">
828 <col width="200px" class="parameters_annotations">
829 </colgroup>
830 <tbody><tr>
831 <td class="parameter_name"><p>reader</p></td>
832 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
833 <td class="parameter_annotations"> </td>
834 </tr></tbody>
835 </table></div>
836 </div>
837 <div class="refsect3">
838 <a name="json-reader-get-member-name.returns"></a><h4>Returns</h4>
839 <p> the name of the member, or <code class="literal">NULL</code>. </p>
840 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
841 </div>
842 <p class="since">Since: <a class="link" href="ix08.html#api-index-0.14">0.14</a></p>
843 </div>
844 <hr>
845 <div class="refsect2">
846 <a name="json-reader-is-value"></a><h3>json_reader_is_value ()</h3>
847 <pre class="programlisting"><span class="returnvalue">gboolean</span>
848 json_reader_is_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
849 <p>Checks whether the <em class="parameter"><code>reader</code></em>
850  is currently on a value</p>
851 <div class="refsect3">
852 <a name="json-reader-is-value.parameters"></a><h4>Parameters</h4>
853 <div class="informaltable"><table class="informaltable" width="100%" border="0">
854 <colgroup>
855 <col width="150px" class="parameters_name">
856 <col class="parameters_description">
857 <col width="200px" class="parameters_annotations">
858 </colgroup>
859 <tbody><tr>
860 <td class="parameter_name"><p>reader</p></td>
861 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
862 <td class="parameter_annotations"> </td>
863 </tr></tbody>
864 </table></div>
865 </div>
866 <div class="refsect3">
867 <a name="json-reader-is-value.returns"></a><h4>Returns</h4>
868 <p> <code class="literal">TRUE</code> if the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is on a value, and <code class="literal">FALSE</code>
869 otherwise</p>
870 </div>
871 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
872 </div>
873 <hr>
874 <div class="refsect2">
875 <a name="json-reader-get-value"></a><h3>json_reader_get_value ()</h3>
876 <pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="returnvalue">JsonNode</span></a> *
877 json_reader_get_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
878 <p>Retrieves the <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> of the current position of <em class="parameter"><code>reader</code></em>
879 </p>
880 <div class="refsect3">
881 <a name="json-reader-get-value.parameters"></a><h4>Parameters</h4>
882 <div class="informaltable"><table class="informaltable" width="100%" border="0">
883 <colgroup>
884 <col width="150px" class="parameters_name">
885 <col class="parameters_description">
886 <col width="200px" class="parameters_annotations">
887 </colgroup>
888 <tbody><tr>
889 <td class="parameter_name"><p>reader</p></td>
890 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
891 <td class="parameter_annotations"> </td>
892 </tr></tbody>
893 </table></div>
894 </div>
895 <div class="refsect3">
896 <a name="json-reader-get-value.returns"></a><h4>Returns</h4>
897 <p> a <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a>, or <code class="literal">NULL</code>. The returned node
898 is owned by the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> and it should not be modified or freed
899 directly. </p>
900 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
901 </div>
902 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
903 </div>
904 <hr>
905 <div class="refsect2">
906 <a name="json-reader-get-int-value"></a><h3>json_reader_get_int_value ()</h3>
907 <pre class="programlisting"><span class="returnvalue">gint64</span>
908 json_reader_get_int_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
909 <p>Retrieves the integer value of the current position of <em class="parameter"><code>reader</code></em>
910 </p>
911 <div class="refsect3">
912 <a name="json-reader-get-int-value.parameters"></a><h4>Parameters</h4>
913 <div class="informaltable"><table class="informaltable" width="100%" border="0">
914 <colgroup>
915 <col width="150px" class="parameters_name">
916 <col class="parameters_description">
917 <col width="200px" class="parameters_annotations">
918 </colgroup>
919 <tbody><tr>
920 <td class="parameter_name"><p>reader</p></td>
921 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
922 <td class="parameter_annotations"> </td>
923 </tr></tbody>
924 </table></div>
925 </div>
926 <div class="refsect3">
927 <a name="json-reader-get-int-value.returns"></a><h4>Returns</h4>
928 <p> the integer value</p>
929 </div>
930 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
931 </div>
932 <hr>
933 <div class="refsect2">
934 <a name="json-reader-get-double-value"></a><h3>json_reader_get_double_value ()</h3>
935 <pre class="programlisting"><span class="returnvalue">gdouble</span>
936 json_reader_get_double_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
937 <p>Retrieves the floating point value of the current position of <em class="parameter"><code>reader</code></em>
938 </p>
939 <div class="refsect3">
940 <a name="json-reader-get-double-value.parameters"></a><h4>Parameters</h4>
941 <div class="informaltable"><table class="informaltable" width="100%" border="0">
942 <colgroup>
943 <col width="150px" class="parameters_name">
944 <col class="parameters_description">
945 <col width="200px" class="parameters_annotations">
946 </colgroup>
947 <tbody><tr>
948 <td class="parameter_name"><p>reader</p></td>
949 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
950 <td class="parameter_annotations"> </td>
951 </tr></tbody>
952 </table></div>
953 </div>
954 <div class="refsect3">
955 <a name="json-reader-get-double-value.returns"></a><h4>Returns</h4>
956 <p> the floating point value</p>
957 </div>
958 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
959 </div>
960 <hr>
961 <div class="refsect2">
962 <a name="json-reader-get-string-value"></a><h3>json_reader_get_string_value ()</h3>
963 <pre class="programlisting">const <span class="returnvalue">gchar</span> *
964 json_reader_get_string_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
965 <p>Retrieves the string value of the current position of <em class="parameter"><code>reader</code></em>
966 </p>
967 <div class="refsect3">
968 <a name="json-reader-get-string-value.parameters"></a><h4>Parameters</h4>
969 <div class="informaltable"><table class="informaltable" width="100%" border="0">
970 <colgroup>
971 <col width="150px" class="parameters_name">
972 <col class="parameters_description">
973 <col width="200px" class="parameters_annotations">
974 </colgroup>
975 <tbody><tr>
976 <td class="parameter_name"><p>reader</p></td>
977 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
978 <td class="parameter_annotations"> </td>
979 </tr></tbody>
980 </table></div>
981 </div>
982 <div class="refsect3">
983 <a name="json-reader-get-string-value.returns"></a><h4>Returns</h4>
984 <p> the string value</p>
985 </div>
986 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
987 </div>
988 <hr>
989 <div class="refsect2">
990 <a name="json-reader-get-boolean-value"></a><h3>json_reader_get_boolean_value ()</h3>
991 <pre class="programlisting"><span class="returnvalue">gboolean</span>
992 json_reader_get_boolean_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
993 <p>Retrieves the boolean value of the current position of <em class="parameter"><code>reader</code></em>
994 </p>
995 <div class="refsect3">
996 <a name="json-reader-get-boolean-value.parameters"></a><h4>Parameters</h4>
997 <div class="informaltable"><table class="informaltable" width="100%" border="0">
998 <colgroup>
999 <col width="150px" class="parameters_name">
1000 <col class="parameters_description">
1001 <col width="200px" class="parameters_annotations">
1002 </colgroup>
1003 <tbody><tr>
1004 <td class="parameter_name"><p>reader</p></td>
1005 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
1006 <td class="parameter_annotations"> </td>
1007 </tr></tbody>
1008 </table></div>
1009 </div>
1010 <div class="refsect3">
1011 <a name="json-reader-get-boolean-value.returns"></a><h4>Returns</h4>
1012 <p> the boolean value</p>
1013 </div>
1014 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1015 </div>
1016 <hr>
1017 <div class="refsect2">
1018 <a name="json-reader-get-null-value"></a><h3>json_reader_get_null_value ()</h3>
1019 <pre class="programlisting"><span class="returnvalue">gboolean</span>
1020 json_reader_get_null_value (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
1021 <p>Checks whether the value of the current position of <em class="parameter"><code>reader</code></em>
1022  is 'null'</p>
1023 <div class="refsect3">
1024 <a name="json-reader-get-null-value.parameters"></a><h4>Parameters</h4>
1025 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1026 <colgroup>
1027 <col width="150px" class="parameters_name">
1028 <col class="parameters_description">
1029 <col width="200px" class="parameters_annotations">
1030 </colgroup>
1031 <tbody><tr>
1032 <td class="parameter_name"><p>reader</p></td>
1033 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
1034 <td class="parameter_annotations"> </td>
1035 </tr></tbody>
1036 </table></div>
1037 </div>
1038 <div class="refsect3">
1039 <a name="json-reader-get-null-value.returns"></a><h4>Returns</h4>
1040 <p> <code class="literal">TRUE</code> if 'null' is set, and <code class="literal">FALSE</code> otherwise</p>
1041 </div>
1042 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1043 </div>
1044 <hr>
1045 <div class="refsect2">
1046 <a name="json-reader-get-error"></a><h3>json_reader_get_error ()</h3>
1047 <pre class="programlisting">const <span class="returnvalue">GError</span> *
1048 json_reader_get_error (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);</pre>
1049 <p>Retrieves the <span class="type">GError</span> currently set on <em class="parameter"><code>reader</code></em>
1050 , if the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
1051 is in error state</p>
1052 <div class="refsect3">
1053 <a name="json-reader-get-error.parameters"></a><h4>Parameters</h4>
1054 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1055 <colgroup>
1056 <col width="150px" class="parameters_name">
1057 <col class="parameters_description">
1058 <col width="200px" class="parameters_annotations">
1059 </colgroup>
1060 <tbody><tr>
1061 <td class="parameter_name"><p>reader</p></td>
1062 <td class="parameter_description"><p>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a></p></td>
1063 <td class="parameter_annotations"> </td>
1064 </tr></tbody>
1065 </table></div>
1066 </div>
1067 <div class="refsect3">
1068 <a name="json-reader-get-error.returns"></a><h4>Returns</h4>
1069 <p> the pointer to the error, or <code class="literal">NULL</code>. </p>
1070 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
1071 </div>
1072 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1073 </div>
1074 </div>
1075 <div class="refsect1">
1076 <a name="JsonReader.other_details"></a><h2>Types and Values</h2>
1077 <div class="refsect2">
1078 <a name="JsonReader-struct"></a><h3>struct JsonReader</h3>
1079 <pre class="programlisting">struct JsonReader;</pre>
1080 <p>The <code class="literal">JsonReader</code> structure contains only private data and should
1081 be accessed using the provided API</p>
1082 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1083 </div>
1084 <hr>
1085 <div class="refsect2">
1086 <a name="JsonReaderClass"></a><h3>struct JsonReaderClass</h3>
1087 <pre class="programlisting">struct JsonReaderClass {
1088 };
1089 </pre>
1090 <p>The <code class="literal">JsonReaderClass</code> structure contains only private data</p>
1091 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1092 </div>
1093 <hr>
1094 <div class="refsect2">
1095 <a name="JsonReaderError"></a><h3>enum JsonReaderError</h3>
1096 <p>Error codes enumeration for <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> errors</p>
1097 <div class="refsect3">
1098 <a name="JsonReaderError.members"></a><h4>Members</h4>
1099 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1100 <colgroup>
1101 <col width="300px" class="enum_members_name">
1102 <col class="enum_members_description">
1103 <col width="200px" class="enum_members_annotations">
1104 </colgroup>
1105 <tbody>
1106 <tr>
1107 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-NO-ARRAY:CAPS"></a>JSON_READER_ERROR_NO_ARRAY</p></td>
1108 <td class="enum_member_description">
1109 <p>No array found at the current position</p>
1110 </td>
1111 <td class="enum_member_annotations"> </td>
1112 </tr>
1113 <tr>
1114 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-INVALID-INDEX:CAPS"></a>JSON_READER_ERROR_INVALID_INDEX</p></td>
1115 <td class="enum_member_description">
1116 <p>Index out of bounds</p>
1117 </td>
1118 <td class="enum_member_annotations"> </td>
1119 </tr>
1120 <tr>
1121 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-NO-OBJECT:CAPS"></a>JSON_READER_ERROR_NO_OBJECT</p></td>
1122 <td class="enum_member_description">
1123 <p>No object found at the current position</p>
1124 </td>
1125 <td class="enum_member_annotations"> </td>
1126 </tr>
1127 <tr>
1128 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-INVALID-MEMBER:CAPS"></a>JSON_READER_ERROR_INVALID_MEMBER</p></td>
1129 <td class="enum_member_description">
1130 <p>Member not found</p>
1131 </td>
1132 <td class="enum_member_annotations"> </td>
1133 </tr>
1134 <tr>
1135 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-INVALID-NODE:CAPS"></a>JSON_READER_ERROR_INVALID_NODE</p></td>
1136 <td class="enum_member_description">
1137 <p>No valid node found at the current position</p>
1138 </td>
1139 <td class="enum_member_annotations"> </td>
1140 </tr>
1141 <tr>
1142 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-NO-VALUE:CAPS"></a>JSON_READER_ERROR_NO_VALUE</p></td>
1143 <td class="enum_member_description">
1144 <p>The node at the current position does not
1145   hold a value</p>
1146 </td>
1147 <td class="enum_member_annotations"> </td>
1148 </tr>
1149 <tr>
1150 <td class="enum_member_name"><p><a name="JSON-READER-ERROR-INVALID-TYPE:CAPS"></a>JSON_READER_ERROR_INVALID_TYPE</p></td>
1151 <td class="enum_member_description">
1152 <p>The node at the current position does not
1153   hold a value of the desired type</p>
1154 </td>
1155 <td class="enum_member_annotations"> </td>
1156 </tr>
1157 </tbody>
1158 </table></div>
1159 </div>
1160 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1161 </div>
1162 <hr>
1163 <div class="refsect2">
1164 <a name="JSON-READER-ERROR:CAPS"></a><h3>JSON_READER_ERROR</h3>
1165 <pre class="programlisting">#define JSON_READER_ERROR               (json_reader_error_quark ())
1166 </pre>
1167 <p>Error domain for <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> errors</p>
1168 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1169 </div>
1170 </div>
1171 <div class="refsect1">
1172 <a name="JsonReader.property-details"></a><h2>Property Details</h2>
1173 <div class="refsect2">
1174 <a name="JsonReader--root"></a><h3>The <code class="literal">“root”</code> property</h3>
1175 <pre class="programlisting">  “root”                     <a class="link" href="json-glib-JSON-Node.html#JsonNode"><span class="type">JsonNode</span></a> *</pre>
1176 <p>The root of the JSON tree that the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> should read.</p>
1177 <p>Flags: Read / Write / Construct</p>
1178 <p class="since">Since: <a class="link" href="ix07.html#api-index-0.12">0.12</a></p>
1179 </div>
1180 </div>
1181 </div>
1182 <div class="footer">
1183 <hr>Generated by GTK-Doc V1.25.1</div>
1184 </body>
1185 </html>