#include "json.h"
+JsonNode
+*zak_utils_json_parse_file (const gchar *filename)
+{
+ JsonParser *parser;
+
+ GError *error;
+
+ JsonNode *ret;
+
+ JsonNode *root;
+
+ parser = json_parser_new ();
+
+ error = NULL;
+ if (json_parser_load_from_file (parser, filename, &error))
+ {
+ root = json_parser_get_root (parser);
+ if (root != NULL)
+ {
+ ret = json_node_copy (root);
+ }
+ }
+ else
+ {
+ g_warning ("Error on parsing json file: %s",
+ error != NULL && error->message != NULL ? error->message : "no details");
+ ret = NULL;
+ }
+
+ g_object_unref (parser);
+
+ return ret;
+}
+
+JsonNode
+*zak_utils_json_parse_data (const gchar *data)
+{
+ JsonParser *parser;
+
+ GError *error;
+
+ JsonNode *ret;
+
+ JsonNode *root;
+
+ parser = json_parser_new ();
+
+ error = NULL;
+ if (json_parser_load_from_data (parser, data, -1, &error))
+ {
+ root = json_parser_get_root (parser);
+ if (root != NULL)
+ {
+ ret = json_node_copy (root);
+ }
+ }
+ else
+ {
+ g_warning ("Error on parsing json data: %s",
+ error != NULL && error->message != NULL ? error->message : "no details");
+ ret = NULL;
+ }
+
+ g_object_unref (parser);
+
+ return ret;
+}
+
JsonNode
*zak_utils_json_node_new_array ()
{
G_BEGIN_DECLS
+JsonNode *zak_utils_json_parse_file (const gchar *filename);
+JsonNode *zak_utils_json_parse_data (const gchar *data);
+
JsonNode *zak_utils_json_node_new_array (void);
JsonNode *zak_utils_json_node_new_object (void);