/** * json_reader_get_boolean_value: * @reader: a #JsonReader * * Retrieves the boolean value of the current position of @reader * * Return value: the boolean value * * Since: 0.12 */ gboolean json_reader_get_boolean_value (JsonReader *reader) { JsonNode *node; g_return_val_if_fail (JSON_IS_READER (reader), FALSE); json_reader_return_val_if_error_set (reader, FALSE); if (reader->priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return FALSE; } node = reader->priv->current_node; if (!JSON_NODE_HOLDS_VALUE (node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE, _("The current position holds a '%s' and not a value"), json_node_type_get_name (JSON_NODE_TYPE (node))); return FALSE; } return json_node_get_boolean (node); }
/** * json_reader_count_members: * @reader: a #JsonReader * * Counts the members of the current position, if @reader is * positioned on an object * * Return value: the number of members, or -1. In case of failure * the #JsonReader is set in an error state * * Since: 0.12 */ gint json_reader_count_members (JsonReader *reader) { JsonReaderPrivate *priv; g_return_val_if_fail (JSON_IS_READER (reader), -1); priv = reader->priv; if (priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return -1; } if (!JSON_NODE_HOLDS_OBJECT (priv->current_node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_OBJECT, _("The current position holds a '%s' and not an object"), json_node_type_get_name (JSON_NODE_TYPE (priv->current_node))); return -1; } return json_object_get_size (json_node_get_object (priv->current_node)); }
/** * json_reader_get_string_value: * @reader: a #JsonReader * * Retrieves the string value of the current position of @reader * * Return value: the string value * * Since: 0.12 */ const gchar * json_reader_get_string_value (JsonReader *reader) { JsonNode *node; g_return_val_if_fail (JSON_IS_READER (reader), NULL); json_reader_return_val_if_error_set (reader, NULL); if (reader->priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return NULL; } node = reader->priv->current_node; if (!JSON_NODE_HOLDS_VALUE (node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_VALUE, _("The current position holds a '%s' and not a value"), json_node_type_get_name (JSON_NODE_TYPE (node))); return NULL; } if (json_node_get_value_type (node) != G_TYPE_STRING) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_TYPE, _("The current position does not hold a string type")); return NULL; } return json_node_get_string (reader->priv->current_node); }
/** * json_reader_count_elements: * @reader: a #JsonReader * * Counts the elements of the current position, if @reader is * positioned on an array * * Return value: the number of elements, or -1. In case of failure * the #JsonReader is set in an error state * * Since: 0.12 */ gint json_reader_count_elements (JsonReader *reader) { JsonReaderPrivate *priv; g_return_val_if_fail (JSON_IS_READER (reader), -1); priv = reader->priv; if (priv->current_node == NULL) { json_reader_set_error (reader, JSON_READER_ERROR_INVALID_NODE, _("No node available at the current position")); return -1; } if (!JSON_NODE_HOLDS_ARRAY (priv->current_node)) { json_reader_set_error (reader, JSON_READER_ERROR_NO_ARRAY, _("The current position holds a '%s' and not an array"), json_node_type_get_name (JSON_NODE_TYPE (priv->current_node))); return -1; } return json_array_get_length (json_node_get_array (priv->current_node)); }
/** * json_node_type_name: * @node: a #JsonNode * * Retrieves the user readable name of the data type contained by @node. * * Return value: a string containing the name of the type. The returned string * is owned by the node and should never be modified or freed */ const gchar * json_node_type_name (JsonNode *node) { g_return_val_if_fail (node != NULL, "(null)"); switch (node->type) { case JSON_NODE_OBJECT: case JSON_NODE_ARRAY: case JSON_NODE_NULL: return json_node_type_get_name (node->type); case JSON_NODE_VALUE: if (node->data.value) return json_value_type_get_name (node->data.value->type); } return "unknown"; }