Skip to content

Instantly share code, notes, and snippets.

@mkamilov
Created July 21, 2017 02:28
Show Gist options
  • Save mkamilov/9b0015d6316bed369750a050df9cd195 to your computer and use it in GitHub Desktop.
Save mkamilov/9b0015d6316bed369750a050df9cd195 to your computer and use it in GitHub Desktop.
json-glib example
cmake_minimum_required (VERSION 2.4)
project (json-glib-demo)
find_package(PkgConfig REQUIRED)
pkg_search_module(JSONGLIB REQUIRED json-glib-1.0)
add_executable (json-glib-demo jsontest.cpp)
include_directories(${JSONGLIB_INCLUDE_DIRS})
target_link_libraries(json-glib-demo ${JSONGLIB_LIBRARIES})
#include <stdio.h>
#include <string>
#include <glib-object.h>
#include <json-glib/json-glib.h>
int main()
{
std::string data = "{\"key1\": \"value1\", \"key2\": \"value2\"}";
JsonParser *parser = json_parser_new ();
GError* err = NULL;
if (!json_parser_load_from_data (parser, data.c_str(), -1, &err)) {
printf("error in parsing json data %s", err->message);
g_error_free (err);
g_object_unref (parser);
return -1;
}
JsonReader *reader = json_reader_new (json_parser_get_root (parser));
char** members = json_reader_list_members(reader);
int i = 0;
while (members[i] != 0) {
std::string m = members[i];
if (m == "key1") {
json_reader_read_member (reader, members[i]);
std::string value = json_reader_get_string_value (reader);
json_reader_end_member (reader);
printf("parse member %s\n", members[i]);
printf("parse value %s\n", value.c_str());
}
i++;
}
g_strfreev(members);
g_object_unref (reader);
g_object_unref (parser);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment