Class
JsonReader
since: 0.12
Description [src]
class Json.Reader : GObject.Object
{
/* No available fields */
}
JsonReader
provides a simple, cursor-based API for parsing a JSON DOM.
It is similar, in spirit, to the XML Reader API.
The cursor is moved by the json_reader_read_*
and the json_reader_end_*
functions. You can enter a JSON object using json_reader_read_member()
with the name of the object member, access the value at that position, and
move the cursor back one level using json_reader_end_member()
; arrays
work in a similar way, using json_reader_read_element()
with the
index of the element, and using json_reader_end_element()
to move
the cursor back.
Using JsonReader
g_autoptr(JsonParser) parser = json_parser_new ();
// str is defined elsewhere and contains:
// { "url" : "http://www.gnome.org/img/flash/two-thirty.png", "size" : [ 652, 242 ] }
json_parser_load_from_data (parser, str, -1, NULL);
g_autoptr(JsonReader) reader = json_reader_new (json_parser_get_root (parser));
// Enter the "url" member of the object
json_reader_read_member (reader, "url");
const char *url = json_reader_get_string_value (reader);
// url now contains "http://www.gnome.org/img/flash/two-thirty.png"
json_reader_end_member (reader);
// Enter the "size" member of the object
json_reader_read_member (reader, "size");
// Enter the first element of the array
json_reader_read_element (reader, 0);
int width = json_reader_get_int_value (reader);
// width now contains 652
json_reader_end_element (reader);
// Enter the second element of the array
json_reader_read_element (reader, 1);
int height = json_reader_get_int_value (reader);
// height now contains 242
json_reader_end_element (reader);
json_reader_end_member (reader);
Error handling
In case of error, JsonReader
will be set in an error state; all subsequent
calls will simply be ignored until a function that resets the error state is
called, e.g.:
// ask for the 7th element; if the element does not exist, the
// reader will be put in an error state
json_reader_read_element (reader, 6);
// in case of error, this will return NULL, otherwise it will
// return the value of the element
str = json_reader_get_string_value (value);
// this function resets the error state if any was set
json_reader_end_element (reader);
If you want to detect the error state as soon as possible, you can use
json_reader_get_error()
:
// like the example above, but in this case we print out the
// error immediately
if (!json_reader_read_element (reader, 6))
{
const GError *error = json_reader_get_error (reader);
g_print ("Unable to read the element: %s", error->message);
}
Available since: 0.12
Instance methods
json_reader_count_elements
Counts the elements of the current position, if the reader is positioned on an array.
since: 0.12
json_reader_count_members
Counts the members of the current position, if the reader is positioned on an object.
since: 0.12
json_reader_end_element
Moves the cursor back to the previous node after being positioned inside an array.
since: 0.12
json_reader_end_member
Moves the cursor back to the previous node after being positioned inside an object.
since: 0.12
json_reader_get_boolean_value
Retrieves the boolean value of the current position of the reader.
since: 0.12
json_reader_get_double_value
Retrieves the floating point value of the current position of the reader.
since: 0.12
json_reader_get_int_value
Retrieves the integer value of the current position of the reader.
since: 0.12
json_reader_get_null_value
Checks whether the value of the current position of the reader is null
.
since: 0.12
json_reader_get_string_value
Retrieves the string value of the current position of the reader.
since: 0.12
json_reader_list_members
Retrieves a list of member names from the current position, if the reader is positioned on an object.
since: 0.14
json_reader_read_element
Advances the cursor of the reader to the element of the array or the member of the object at the given position.
since: 0.12
json_reader_read_member
Advances the cursor of the reader to the member_name
of the object at
the current position.
since: 0.12
Signals
Signals inherited from GObject (1)
GObject::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.
Class structure
struct JsonReaderClass {
void (* _json_padding0) (
void
);
void (* _json_padding1) (
void
);
void (* _json_padding2) (
void
);
void (* _json_padding3) (
void
);
void (* _json_padding4) (
void
);
}
No description available.
Class members
_json_padding0: void (* _json_padding0) ( void )
No description available.
_json_padding1: void (* _json_padding1) ( void )
No description available.
_json_padding2: void (* _json_padding2) ( void )
No description available.
_json_padding3: void (* _json_padding3) ( void )
No description available.
_json_padding4: void (* _json_padding4) ( void )
No description available.