1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>JsonReader</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.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.18.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
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="2">
17 <td><a accesskey="p" href="JsonParser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">JSON-GLib Reference Manual</th>
21 <td><a accesskey="n" href="JsonPath.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#JsonReader.synopsis" class="shortcut">Top</a>
26 <a href="#JsonReader.description" class="shortcut">Description</a>
28 <a href="#JsonReader.object-hierarchy" class="shortcut">Object Hierarchy</a>
30 <a href="#JsonReader.properties" class="shortcut">Properties</a>
33 <div class="refentry">
34 <a name="JsonReader"></a><div class="titlepage"></div>
35 <div class="refnamediv"><table width="100%"><tr>
37 <h2><span class="refentrytitle"><a name="JsonReader.top_of_page"></a>JsonReader</span></h2>
38 <p>JsonReader — A cursor-based parser</p>
40 <td valign="top" align="right"></td>
42 <div class="refsynopsisdiv">
43 <a name="JsonReader.synopsis"></a><h2>Synopsis</h2>
44 <pre class="synopsis">struct <a class="link" href="JsonReader.html#JsonReader-struct" title="struct JsonReader">JsonReader</a>;
45 struct <a class="link" href="JsonReader.html#JsonReaderClass" title="struct JsonReaderClass">JsonReaderClass</a>;
46 <a class="link" href="JsonReader.html" title="JsonReader"><span class="returnvalue">JsonReader</span></a> * <a class="link" href="JsonReader.html#json-reader-new" title="json_reader_new ()">json_reader_new</a> (<em class="parameter"><code><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> *node</code></em>);
47 <span class="returnvalue">void</span> <a class="link" href="JsonReader.html#json-reader-set-root" title="json_reader_set_root ()">json_reader_set_root</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>,
48 <em class="parameter"><code><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> *root</code></em>);
50 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-read-element" title="json_reader_read_element ()">json_reader_read_element</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>,
51 <em class="parameter"><code><span class="type">guint</span> index_</code></em>);
52 <span class="returnvalue">void</span> <a class="link" href="JsonReader.html#json-reader-end-element" title="json_reader_end_element ()">json_reader_end_element</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
53 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-is-array" title="json_reader_is_array ()">json_reader_is_array</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
54 <span class="returnvalue">gint</span> <a class="link" href="JsonReader.html#json-reader-count-elements" title="json_reader_count_elements ()">json_reader_count_elements</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
56 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-read-member" title="json_reader_read_member ()">json_reader_read_member</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>,
57 <em class="parameter"><code>const <span class="type">gchar</span> *member_name</code></em>);
58 <span class="returnvalue">void</span> <a class="link" href="JsonReader.html#json-reader-end-member" title="json_reader_end_member ()">json_reader_end_member</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
59 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-is-object" title="json_reader_is_object ()">json_reader_is_object</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
60 <span class="returnvalue">gint</span> <a class="link" href="JsonReader.html#json-reader-count-members" title="json_reader_count_members ()">json_reader_count_members</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
61 <span class="returnvalue">gchar</span> ** <a class="link" href="JsonReader.html#json-reader-list-members" title="json_reader_list_members ()">json_reader_list_members</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
62 const <span class="returnvalue">gchar</span> * <a class="link" href="JsonReader.html#json-reader-get-member-name" title="json_reader_get_member_name ()">json_reader_get_member_name</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
64 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-is-value" title="json_reader_is_value ()">json_reader_is_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
65 <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * <a class="link" href="JsonReader.html#json-reader-get-value" title="json_reader_get_value ()">json_reader_get_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
66 <span class="returnvalue">gint64</span> <a class="link" href="JsonReader.html#json-reader-get-int-value" title="json_reader_get_int_value ()">json_reader_get_int_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
67 <span class="returnvalue">gdouble</span> <a class="link" href="JsonReader.html#json-reader-get-double-value" title="json_reader_get_double_value ()">json_reader_get_double_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
68 const <span class="returnvalue">gchar</span> * <a class="link" href="JsonReader.html#json-reader-get-string-value" title="json_reader_get_string_value ()">json_reader_get_string_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
69 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-get-boolean-value" title="json_reader_get_boolean_value ()">json_reader_get_boolean_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
70 <span class="returnvalue">gboolean</span> <a class="link" href="JsonReader.html#json-reader-get-null-value" title="json_reader_get_null_value ()">json_reader_get_null_value</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
72 enum <a class="link" href="JsonReader.html#JsonReaderError" title="enum JsonReaderError">JsonReaderError</a>;
73 #define <a class="link" href="JsonReader.html#JSON-READER-ERROR:CAPS" title="JSON_READER_ERROR">JSON_READER_ERROR</a>
74 const <span class="returnvalue">GError</span> * <a class="link" href="JsonReader.html#json-reader-get-error" title="json_reader_get_error ()">json_reader_get_error</a> (<em class="parameter"><code><a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> *reader</code></em>);
77 <div class="refsect1">
78 <a name="JsonReader.object-hierarchy"></a><h2>Object Hierarchy</h2>
79 <pre class="synopsis">
84 <div class="refsect1">
85 <a name="JsonReader.properties"></a><h2>Properties</h2>
86 <pre class="synopsis">
87 "<a class="link" href="JsonReader.html#JsonReader--root" title='The "root" property'>root</a>" <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>* : Read / Write / Construct
90 <div class="refsect1">
91 <a name="JsonReader.description"></a><h2>Description</h2>
93 <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
94 is similar, in spirit, to the XML Reader API.
97 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
98 calls will simply be ignored until a function that resets the error state is
103 <div class="informalexample">
104 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
107 <td class="listing_lines" align="right"><pre>1
119 <td class="listing_code"><pre class="programlisting"><span class="comment">/* ask for the 7th element; if the element does not exist, the</span>
120 <span class="comment"> * reader will be put in an error state</span>
121 <span class="comment"> */</span>
122 <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>
124 <span class="comment">/* in case of error, this will return NULL, otherwise it will</span>
125 <span class="comment"> * return the value of the element</span>
126 <span class="comment"> */</span>
127 <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>
129 <span class="comment">/* this function resets the error state if any was set */</span>
130 <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>
139 If you want to detect the error state as soon as possible, you can use
140 <a class="link" href="JsonReader.html#json-reader-get-error" title="json_reader_get_error ()"><code class="function">json_reader_get_error()</code></a>:
144 <div class="informalexample">
145 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
148 <td class="listing_lines" align="right"><pre>1
156 <td class="listing_code"><pre class="programlisting"><span class="comment">/* like the example above, but in this case we print out the</span>
157 <span class="comment"> * error immediately</span>
158 <span class="comment"> */</span>
159 <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>
160 <span class="normal"> </span><span class="cbracket">{</span>
161 <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>
162 <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">-></span><span class="normal">message</span><span class="symbol">);</span>
163 <span class="normal"> </span><span class="cbracket">}</span></pre></td>
172 <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is available since JSON-GLib 0.12.
175 <div class="refsect1">
176 <a name="JsonReader.details"></a><h2>Details</h2>
177 <div class="refsect2">
178 <a name="JsonReader-struct"></a><h3>struct JsonReader</h3>
179 <pre class="programlisting">struct JsonReader;</pre>
181 The <span class="structname">JsonReader</span> structure contains only
182 private data and should only be accessed using the provided API
184 <p class="since">Since 0.12</p>
187 <div class="refsect2">
188 <a name="JsonReaderClass"></a><h3>struct JsonReaderClass</h3>
189 <pre class="programlisting">struct JsonReaderClass {
193 The <span class="structname">JsonReaderClass</span> structure contains only
196 <p class="since">Since 0.12</p>
199 <div class="refsect2">
200 <a name="json-reader-new"></a><h3>json_reader_new ()</h3>
201 <pre class="programlisting"><a class="link" href="JsonReader.html" title="JsonReader"><span class="returnvalue">JsonReader</span></a> * json_reader_new (<em class="parameter"><code><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> *node</code></em>);</pre>
203 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
204 the JSON tree starting from <em class="parameter"><code>node</code></em>
206 <div class="variablelist"><table border="0">
207 <col align="left" valign="top">
210 <td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
211 <td>a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
215 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
216 <td>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
217 release the allocated resources when done</td>
221 <p class="since">Since 0.12</p>
224 <div class="refsect2">
225 <a name="json-reader-set-root"></a><h3>json_reader_set_root ()</h3>
226 <pre class="programlisting"><span class="returnvalue">void</span> 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>,
227 <em class="parameter"><code><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> *root</code></em>);</pre>
229 Sets the root <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> to be read by <em class="parameter"><code>reader</code></em>. The <em class="parameter"><code>reader</code></em> will take
230 a copy of <em class="parameter"><code>root</code></em>
233 If another <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> is currently set as root, it will be replaced.
235 <div class="variablelist"><table border="0">
236 <col align="left" valign="top">
239 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
240 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
244 <td><p><span class="term"><em class="parameter"><code>root</code></em> :</span></p></td>
245 <td>a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
250 <p class="since">Since 0.12</p>
253 <div class="refsect2">
254 <a name="json-reader-read-element"></a><h3>json_reader_read_element ()</h3>
255 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>,
256 <em class="parameter"><code><span class="type">guint</span> index_</code></em>);</pre>
258 Advances the cursor of <em class="parameter"><code>reader</code></em> to the element <em class="parameter"><code>index_</code></em> of the array
259 or the object at the current position.
262 You can use the json_reader_get_value* family of functions to retrieve
263 the value of the element; for instance:
267 <div class="informalexample">
268 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
271 <td class="listing_lines" align="right"><pre>1
273 <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>
274 <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>
283 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
284 reposition the cursor inside the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>, e.g.:
288 <div class="informalexample">
289 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
292 <td class="listing_lines" align="right"><pre>1
299 <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>
300 <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>
301 <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>
303 <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>
304 <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>
305 <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>
314 If <em class="parameter"><code>reader</code></em> is not currently on an array or an object, or if the <em class="parameter"><code>index_</code></em> is
315 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
316 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.
318 <div class="variablelist"><table border="0">
319 <col align="left" valign="top">
322 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
323 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
327 <td><p><span class="term"><em class="parameter"><code>index_</code></em> :</span></p></td>
328 <td>the index of the element</td>
331 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
333 <code class="literal">TRUE</code> on success, and <code class="literal">FALSE</code> otherwise</td>
337 <p class="since">Since 0.12</p>
340 <div class="refsect2">
341 <a name="json-reader-end-element"></a><h3>json_reader_end_element ()</h3>
342 <pre class="programlisting"><span class="returnvalue">void</span> 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>
344 Moves the cursor back to the previous node after being positioned
348 This function resets the error state of <em class="parameter"><code>reader</code></em>, if any was set
350 <div class="variablelist"><table border="0">
351 <col align="left" valign="top">
353 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
354 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
358 <p class="since">Since 0.12</p>
361 <div class="refsect2">
362 <a name="json-reader-is-array"></a><h3>json_reader_is_array ()</h3>
363 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>
365 Checks whether the <em class="parameter"><code>reader</code></em> is currently on an array
367 <div class="variablelist"><table border="0">
368 <col align="left" valign="top">
371 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
372 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
376 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
378 <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>
383 <p class="since">Since 0.12</p>
386 <div class="refsect2">
387 <a name="json-reader-count-elements"></a><h3>json_reader_count_elements ()</h3>
388 <pre class="programlisting"><span class="returnvalue">gint</span> 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>
390 Counts the elements of the current position, if <em class="parameter"><code>reader</code></em> is
391 positioned on an array
393 <div class="variablelist"><table border="0">
394 <col align="left" valign="top">
397 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
398 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
402 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
403 <td>the number of elements, or -1. In case of failure
404 the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is set in an error state</td>
408 <p class="since">Since 0.12</p>
411 <div class="refsect2">
412 <a name="json-reader-read-member"></a><h3>json_reader_read_member ()</h3>
413 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>,
414 <em class="parameter"><code>const <span class="type">gchar</span> *member_name</code></em>);</pre>
416 Advances the cursor of <em class="parameter"><code>reader</code></em> to the <em class="parameter"><code>member_name</code></em> of the object at the
420 You can use the json_reader_get_value* family of functions to retrieve
421 the value of the member; for instance:
425 <div class="informalexample">
426 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
429 <td class="listing_lines" align="right"><pre>1
431 <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>
432 <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>
441 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
442 reposition the cursor inside the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>, e.g.:
446 <div class="informalexample">
447 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
450 <td class="listing_lines" align="right"><pre>1
457 <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>
458 <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>
459 <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>
461 <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="string">"title"</span><span class="symbol">);</span>
462 <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>
463 <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>
472 If <em class="parameter"><code>reader</code></em> is not currently on an object, or if the <em class="parameter"><code>member_name</code></em> is not
473 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
474 <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.
476 <div class="variablelist"><table border="0">
477 <col align="left" valign="top">
480 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
481 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
485 <td><p><span class="term"><em class="parameter"><code>member_name</code></em> :</span></p></td>
486 <td>the name of the member to read</td>
489 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
491 <code class="literal">TRUE</code> on success, and <code class="literal">FALSE</code> otherwise</td>
495 <p class="since">Since 0.12</p>
498 <div class="refsect2">
499 <a name="json-reader-end-member"></a><h3>json_reader_end_member ()</h3>
500 <pre class="programlisting"><span class="returnvalue">void</span> 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>
502 Moves the cursor back to the previous node after being positioned
506 This function resets the error state of <em class="parameter"><code>reader</code></em>, if any was set
508 <div class="variablelist"><table border="0">
509 <col align="left" valign="top">
511 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
512 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
516 <p class="since">Since 0.12</p>
519 <div class="refsect2">
520 <a name="json-reader-is-object"></a><h3>json_reader_is_object ()</h3>
521 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>
523 Checks whether the <em class="parameter"><code>reader</code></em> is currently on an object
525 <div class="variablelist"><table border="0">
526 <col align="left" valign="top">
529 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
530 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
534 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
536 <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>
541 <p class="since">Since 0.12</p>
544 <div class="refsect2">
545 <a name="json-reader-count-members"></a><h3>json_reader_count_members ()</h3>
546 <pre class="programlisting"><span class="returnvalue">gint</span> 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>
548 Counts the members of the current position, if <em class="parameter"><code>reader</code></em> is
549 positioned on an object
551 <div class="variablelist"><table border="0">
552 <col align="left" valign="top">
555 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
556 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
560 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
561 <td>the number of members, or -1. In case of failure
562 the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> is set in an error state</td>
566 <p class="since">Since 0.12</p>
569 <div class="refsect2">
570 <a name="json-reader-list-members"></a><h3>json_reader_list_members ()</h3>
571 <pre class="programlisting"><span class="returnvalue">gchar</span> ** 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>
573 Retrieves a list of member names from the current position, if <em class="parameter"><code>reader</code></em>
574 is positioned on an object.
576 <div class="variablelist"><table border="0">
577 <col align="left" valign="top">
580 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
581 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
585 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
586 <td>a newly allocated, <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>-terminated
587 array of strings holding the members name. Use <code class="function">g_strfreev()</code> when
588 done. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
593 <p class="since">Since 0.14</p>
596 <div class="refsect2">
597 <a name="json-reader-get-member-name"></a><h3>json_reader_get_member_name ()</h3>
598 <pre class="programlisting">const <span class="returnvalue">gchar</span> * 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>
600 Retrieves the name of the current member.
602 <div class="variablelist"><table border="0">
603 <col align="left" valign="top">
606 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
607 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
611 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
612 <td>the name of the member, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
617 <p class="since">Since 0.14</p>
620 <div class="refsect2">
621 <a name="json-reader-is-value"></a><h3>json_reader_is_value ()</h3>
622 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>
624 Checks whether the <em class="parameter"><code>reader</code></em> is currently on a value
626 <div class="variablelist"><table border="0">
627 <col align="left" valign="top">
630 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
631 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
635 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
637 <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>
642 <p class="since">Since 0.12</p>
645 <div class="refsect2">
646 <a name="json-reader-get-value"></a><h3>json_reader_get_value ()</h3>
647 <pre class="programlisting"><a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="returnvalue">JsonNode</span></a> * 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>
649 Retrieves the <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a> of the current position of <em class="parameter"><code>reader</code></em>
651 <div class="variablelist"><table border="0">
652 <col align="left" valign="top">
655 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
656 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
660 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
661 <td>a <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>. The returned node
662 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
663 directly. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
668 <p class="since">Since 0.12</p>
671 <div class="refsect2">
672 <a name="json-reader-get-int-value"></a><h3>json_reader_get_int_value ()</h3>
673 <pre class="programlisting"><span class="returnvalue">gint64</span> 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>
675 Retrieves the integer value of the current position of <em class="parameter"><code>reader</code></em>
677 <div class="variablelist"><table border="0">
678 <col align="left" valign="top">
681 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
682 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
686 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
687 <td>the integer value</td>
691 <p class="since">Since 0.12</p>
694 <div class="refsect2">
695 <a name="json-reader-get-double-value"></a><h3>json_reader_get_double_value ()</h3>
696 <pre class="programlisting"><span class="returnvalue">gdouble</span> 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>
698 Retrieves the floating point value of the current position of <em class="parameter"><code>reader</code></em>
700 <div class="variablelist"><table border="0">
701 <col align="left" valign="top">
704 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
705 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
709 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
710 <td>the floating point value</td>
714 <p class="since">Since 0.12</p>
717 <div class="refsect2">
718 <a name="json-reader-get-string-value"></a><h3>json_reader_get_string_value ()</h3>
719 <pre class="programlisting">const <span class="returnvalue">gchar</span> * 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>
721 Retrieves the string value of the current position of <em class="parameter"><code>reader</code></em>
723 <div class="variablelist"><table border="0">
724 <col align="left" valign="top">
727 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
728 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
732 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
733 <td>the string value</td>
737 <p class="since">Since 0.12</p>
740 <div class="refsect2">
741 <a name="json-reader-get-boolean-value"></a><h3>json_reader_get_boolean_value ()</h3>
742 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>
744 Retrieves the boolean value of the current position of <em class="parameter"><code>reader</code></em>
746 <div class="variablelist"><table border="0">
747 <col align="left" valign="top">
750 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
751 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
755 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
756 <td>the boolean value</td>
760 <p class="since">Since 0.12</p>
763 <div class="refsect2">
764 <a name="json-reader-get-null-value"></a><h3>json_reader_get_null_value ()</h3>
765 <pre class="programlisting"><span class="returnvalue">gboolean</span> 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>
767 Checks whether the value of the current position of <em class="parameter"><code>reader</code></em> is 'null'
769 <div class="variablelist"><table border="0">
770 <col align="left" valign="top">
773 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
774 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
778 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
780 <code class="literal">TRUE</code> if 'null' is set, and <code class="literal">FALSE</code> otherwise</td>
784 <p class="since">Since 0.12</p>
787 <div class="refsect2">
788 <a name="JsonReaderError"></a><h3>enum JsonReaderError</h3>
789 <pre class="programlisting">typedef enum {
790 JSON_READER_ERROR_NO_ARRAY,
791 JSON_READER_ERROR_INVALID_INDEX,
792 JSON_READER_ERROR_NO_OBJECT,
793 JSON_READER_ERROR_INVALID_MEMBER,
794 JSON_READER_ERROR_INVALID_NODE,
795 JSON_READER_ERROR_NO_VALUE,
796 JSON_READER_ERROR_INVALID_TYPE
800 Error codes enumeration for <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> errors
802 <div class="variablelist"><table border="0">
803 <col align="left" valign="top">
806 <td><p><a name="JSON-READER-ERROR-NO-ARRAY:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_NO_ARRAY</code></span></p></td>
807 <td>No array found at the current position
811 <td><p><a name="JSON-READER-ERROR-INVALID-INDEX:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_INVALID_INDEX</code></span></p></td>
812 <td>Index out of bounds
816 <td><p><a name="JSON-READER-ERROR-NO-OBJECT:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_NO_OBJECT</code></span></p></td>
817 <td>No object found at the current position
821 <td><p><a name="JSON-READER-ERROR-INVALID-MEMBER:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_INVALID_MEMBER</code></span></p></td>
826 <td><p><a name="JSON-READER-ERROR-INVALID-NODE:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_INVALID_NODE</code></span></p></td>
827 <td>No valid node found at the current position
831 <td><p><a name="JSON-READER-ERROR-NO-VALUE:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_NO_VALUE</code></span></p></td>
832 <td>The node at the current position does not
837 <td><p><a name="JSON-READER-ERROR-INVALID-TYPE:CAPS"></a><span class="term"><code class="literal">JSON_READER_ERROR_INVALID_TYPE</code></span></p></td>
838 <td>The node at the current position does not
839 hold a value of the desired type
844 <p class="since">Since 0.12</p>
847 <div class="refsect2">
848 <a name="JSON-READER-ERROR:CAPS"></a><h3>JSON_READER_ERROR</h3>
849 <pre class="programlisting">#define JSON_READER_ERROR (json_reader_error_quark ())
852 Error domain for <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> errors
854 <p class="since">Since 0.12</p>
857 <div class="refsect2">
858 <a name="json-reader-get-error"></a><h3>json_reader_get_error ()</h3>
859 <pre class="programlisting">const <span class="returnvalue">GError</span> * 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>
861 Retrieves the <span class="type">GError</span> currently set on <em class="parameter"><code>reader</code></em>, if the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
864 <div class="variablelist"><table border="0">
865 <col align="left" valign="top">
868 <td><p><span class="term"><em class="parameter"><code>reader</code></em> :</span></p></td>
869 <td>a <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a>
873 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
874 <td>the pointer to the error, or <a href="/home/ebassi/gnome3/install/share/gtk-doc/html/liboil/liboil-liboiljunk.html#NULL--CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
879 <p class="since">Since 0.12</p>
882 <div class="refsect1">
883 <a name="JsonReader.property-details"></a><h2>Property Details</h2>
884 <div class="refsect2">
885 <a name="JsonReader--root"></a><h3>The <code class="literal">"root"</code> property</h3>
886 <pre class="programlisting"> "root" <a class="link" href="json-glib-JSON-Node.html#JsonNode" title="JsonNode"><span class="type">JsonNode</span></a>* : Read / Write / Construct</pre>
888 The root of the JSON tree that the <a class="link" href="JsonReader.html" title="JsonReader"><span class="type">JsonReader</span></a> should read.
890 <p class="since">Since 0.12</p>
896 Generated by GTK-Doc V1.18.1</div>