static JsonGenerator * _model_to_generator (MexQueueModel *model) { gint i; JsonArray *json_array; JsonNode *root; JsonGenerator *generator; json_array = json_array_sized_new (mex_model_get_length (MEX_MODEL (model))); for (i = 0; i < mex_model_get_length (MEX_MODEL (model)); i++) { MexContent *content; JsonNode *content_node; content = mex_model_get_content (MEX_MODEL (model), i); content_node = json_gobject_serialize (G_OBJECT (content)); json_array_add_element (json_array, content_node); } generator = json_generator_new (); root = json_node_new (JSON_NODE_ARRAY); json_node_set_array (root, json_array); json_generator_set_root (generator, root); json_array_unref (json_array); json_node_free (root); return generator; }
static char * file_list_to_json (GList *files) { JsonNode *root; JsonArray *array; GList *ptr; char *file; JsonGenerator *gen; char *json_data; gsize len; root = json_node_new (JSON_NODE_ARRAY); array = json_array_new (); for (ptr = files; ptr; ptr = ptr->next) { file = ptr->data; json_array_add_string_element (array, file); } json_node_set_array (root, array); gen = json_generator_new (); json_generator_set_root (gen, root); json_data = json_generator_to_data (gen, &len); json_node_free (root); g_object_unref (gen); return json_data; }
/** * json_node_init_array: * @node: the #JsonNode to initialize * @array: (allow-none): the #JsonArray to initialize @node with, or %NULL * * Initializes @node to %JSON_NODE_ARRAY and sets @array into it. * * This function will take a reference on @array. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_array (JsonNode *node, JsonArray *array) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_ARRAY); json_node_set_array (node, array); return node; }
int main (int argc, char *argv[]) { MyFlowArrow *arrow; MySystem *system; JsonGenerator *gen = json_generator_new (); JsonNode *node, *root; JsonArray *array; gchar *data; gsize len; gtk_init (NULL, NULL); libgoffice_init (); root = json_node_new (JSON_NODE_ARRAY); array = json_array_new (); arrow = g_object_new (MY_TYPE_FLOW_ARROW, "x0", 100.0, "x1", 200.0, "y0", 200.0, "y1", 300.0, "energy-quantity", -22.0, "anchor", MY_ANCHOR_NORTH, "label-text", "test", NULL); node = json_gobject_serialize (G_OBJECT (arrow)); json_array_add_element (array, node); system = g_object_new (MY_TYPE_SYSTEM, "x", 100.0, "y", 200.0, NULL); node = json_gobject_serialize (G_OBJECT (system)); json_array_add_element (array, node); json_node_set_array (root, array); json_generator_set_root (gen, root); json_generator_set_pretty (gen, TRUE); data = json_generator_to_data (gen, &len); g_print ("%s\n", data); libgoffice_shutdown (); return 0; }
static void postal_http_reply_devices (PostalHttp *http, SoupMessage *message, guint status, GPtrArray *devices) { JsonGenerator *g; PostalDevice *device; JsonArray *ar; JsonNode *node; JsonNode *child; gchar *json_buf; gsize length; guint i; g_assert(SOUP_IS_MESSAGE(message)); g_assert(devices); ar = json_array_new(); node = json_node_new(JSON_NODE_ARRAY); for (i = 0; i < devices->len; i++) { device = g_ptr_array_index(devices, i); if ((child = postal_device_save_to_json(device, NULL))) { json_array_add_element(ar, child); } } json_node_set_array(node, ar); json_array_unref(ar); g = json_generator_new(); json_generator_set_root(g, node); json_node_free(node); json_generator_set_indent(g, 2); json_generator_set_pretty(g, TRUE); json_buf = json_generator_to_data(g, &length); g_object_unref(g); soup_message_set_response(message, "application/json", SOUP_MEMORY_TAKE, json_buf, length); soup_message_set_status(message, status ?: SOUP_STATUS_OK); soup_server_unpause_message(http->priv->server, message); }
static JsonNode * gvariant_to_json_array (GVariant *variant) { JsonArray *array; JsonNode *json_node; array = json_array_new (); json_node = json_node_new (JSON_NODE_ARRAY); json_node_set_array (json_node, array); json_array_unref (array); gvariant_foreach (variant, gvariant_to_json_array_foreach, array); return json_node; }