static JSValueRef js_emit (JSContextRef ctx, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef * exception) { JsonObject *obj; JsonNode *node; gchar *buffer; if (argumentCount != 1) { *exception = JSValueMakeNumber (ctx, 1); return NULL; } if (JSValueIsObject (ctx, arguments[0]) == false) { *exception = JSValueMakeNumber (ctx, 1); return NULL; } obj = json_object_new(); js_value (ctx, (JSObjectRef) arguments[0], &node); json_object_set_member (obj, "emit", node); JsonNode *node1 = json_node_new (JSON_NODE_OBJECT); if (node1 == NULL) { json_object_unref (obj); return NULL; } json_node_set_object (node1, obj); JsonGenerator *gen = json_generator_new(); if (gen == NULL) { json_node_free (node1); return NULL; } json_generator_set_root (gen, node1 ); buffer = json_generator_to_data (gen,NULL); if (buffer == NULL) { json_node_free (node1); g_object_unref (gen); return NULL; } json_node_free (node1); g_object_unref (gen); puts (buffer); g_free (buffer); return NULL; /* shouldn't be an object ? */ }
/** * json_node_init_object: * @node: the #JsonNode to initialize * @object: (allow-none): the #JsonObject to initialize @node with, or %NULL * * Initializes @node to %JSON_NODE_OBJECT and sets @object into it. * * This function will take a reference on @object. * * 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_object (JsonNode *node, JsonObject *object) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_OBJECT); json_node_set_object (node, object); return node; }
static void glide_json_object_add_image_properties (JsonObject *obj, GlideImage *image) { JsonNode *n = json_node_new (JSON_NODE_OBJECT); JsonObject *img_obj = json_object_new (); json_node_set_object (n, img_obj); glide_json_object_set_string (img_obj, "filename", image->priv->filename); json_object_set_member (obj, "image-properties", n); }
static JsonNode * glide_image_serialize (GlideActor *self) { JsonNode *node = json_node_new (JSON_NODE_OBJECT); JsonObject *obj = json_object_new (); json_node_set_object (node, obj); glide_json_object_set_string (obj, "type", "image"); glide_json_object_add_actor_geometry (obj, CLUTTER_ACTOR (self)); glide_json_object_add_image_properties (obj, GLIDE_IMAGE (self)); return node; }
static JsonNode * gvariant_to_json_object (GVariant *variant) { JsonNode *json_node; JsonObject *object; json_node = json_node_new (JSON_NODE_OBJECT); object = json_object_new (); json_node_set_object (json_node, object); json_object_unref (object); gvariant_foreach (variant, gvariant_to_json_object_foreach, object); return json_node; }
/** * glide_document_serialize: * @document: A #GlideDocument * * Serializes the contents of @document to JSON. * * Return value: A #JsonNode containing the serialized contents of @document. */ JsonNode * glide_document_serialize(GlideDocument *document) { JsonNode *node; JsonObject *obj; g_return_val_if_fail (GLIDE_IS_DOCUMENT (document), NULL); node = json_node_new (JSON_NODE_OBJECT); obj = json_object_new (); json_node_set_object (node, obj); glide_document_json_obj_set_name (document, obj); glide_document_json_obj_set_slides (document, obj); return node; }
gchar * skypeweb_jsonobj_to_string(JsonObject *jsonobj) { JsonGenerator *generator; JsonNode *root; gchar *string; root = json_node_new(JSON_NODE_OBJECT); json_node_set_object(root, jsonobj); generator = json_generator_new(); json_generator_set_root(generator, root); string = json_generator_to_data(generator, NULL); g_object_unref(generator); json_node_free(root); return string; }
static void postal_http_reply_error (PostalHttp *http, SoupMessage *message, const GError *error) { JsonGenerator *g; JsonObject *obj; JsonNode *node; gchar *json_buf; gsize length; g_assert(SOUP_IS_MESSAGE(message)); g_assert(error); obj = json_object_new(); json_object_set_string_member(obj, "message", error->message); json_object_set_string_member(obj, "domain", g_quark_to_string(error->domain)); json_object_set_int_member(obj, "code", error->code); node = json_node_new(JSON_NODE_OBJECT); json_node_set_object(node, obj); json_object_unref(obj); g = json_generator_new(); json_generator_set_indent(g, 2); json_generator_set_pretty(g, TRUE); json_generator_set_root(g, node); json_node_free(node); 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, get_status_code(error)); soup_server_unpause_message(http->priv->server, message); }
/** * couchdb_struct_field_to_string: * @sf: A #CouchdbStructField object * * Convert a #CouchdbStructField to a JSON string. * * Return value: A string representing the contents of the given #CouchdbStructField * object in JSON format. */ char * couchdb_struct_field_to_string (CouchdbStructField *sf) { JsonNode *node; JsonGenerator *generator; gsize size; char *str = NULL; g_return_val_if_fail (sf != NULL, NULL); node = json_node_new (JSON_NODE_OBJECT); json_node_set_object (node, sf->json_object); generator = json_generator_new (); json_generator_set_root (generator, node); str = json_generator_to_data (generator, &size); g_object_unref (G_OBJECT (generator)); json_node_free (node); return str; }
gchar * test_generate_json (JsonObject *object, gboolean take_ownership) { JsonGenerator *generator; JsonNode *node; gchar *generated; generator = json_generator_new (); node = json_node_new (JSON_NODE_OBJECT); if (take_ownership) json_node_take_object (node, object); else json_node_set_object (node, object); json_generator_set_root (generator, node); json_generator_set_pretty (generator, TRUE); generated = json_generator_to_data (generator, NULL); g_object_unref (generator); json_node_free (node); return generated; }
/** * push_gcm_client_deliver_async: * @client: (in): A #PushGcmClient. * @identities: (element-type PushGcmIdentity*): A #GList of #PushGcmIdentity. * @message: A #PushGcmMessage. * @cancellable: (allow-none): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback. * @user_data: User data for @callback. * * Asynchronously deliver a #PushGcmMessage to one or more GCM enabled * devices. */ void push_gcm_client_deliver_async (PushGcmClient *client, GList *identities, PushGcmMessage *message, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { PushGcmClientPrivate *priv; GSimpleAsyncResult *simple; SoupMessage *request; const gchar *registration_id; const gchar *collapse_key; JsonGenerator *g; JsonObject *obj; JsonObject *data; JsonObject *mdata; JsonArray *ar; JsonNode *node; GList *iter; GList *list; gchar *str; gsize length; guint time_to_live; ENTRY; g_return_if_fail(PUSH_IS_GCM_CLIENT(client)); g_return_if_fail(identities); g_return_if_fail(PUSH_IS_GCM_MESSAGE(message)); g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable)); g_return_if_fail(callback); priv = client->priv; request = soup_message_new("POST", PUSH_GCM_CLIENT_URL); ar = json_array_new(); for (iter = identities; iter; iter = iter->next) { g_assert(PUSH_IS_GCM_IDENTITY(iter->data)); registration_id = push_gcm_identity_get_registration_id(iter->data); json_array_add_string_element(ar, registration_id); } str = g_strdup_printf("key=%s", priv->auth_token); soup_message_headers_append(request->request_headers, "Authorization", str); g_free(str); soup_message_headers_append(request->request_headers, "Accept", "application/json"); data = json_object_new(); if ((collapse_key = push_gcm_message_get_collapse_key(message))) { json_object_set_string_member(data, "collapse_key", collapse_key); } json_object_set_boolean_member(data, "delay_while_idle", push_gcm_message_get_delay_while_idle(message)); json_object_set_boolean_member(data, "dry_run", push_gcm_message_get_dry_run(message)); if ((time_to_live = push_gcm_message_get_time_to_live(message))) { json_object_set_int_member(data, "time_to_live", time_to_live); } if ((mdata = push_gcm_message_get_data(message))) { json_object_set_object_member(data, "data", mdata); } obj = json_object_new(); json_object_set_array_member(obj, "registration_ids", ar); json_object_set_object_member(obj, "data", data); node = json_node_new(JSON_NODE_OBJECT); json_node_set_object(node, obj); json_object_unref(obj); g = json_generator_new(); json_generator_set_pretty(g, TRUE); json_generator_set_indent(g, 2); json_generator_set_root(g, node); str = json_generator_to_data(g, &length); json_node_free(node); g_object_unref(g); g_print("REQUEST: \"%s\"\n", str); soup_message_set_request(request, "application/json", SOUP_MEMORY_TAKE, str, length); simple = g_simple_async_result_new(G_OBJECT(client), callback, user_data, push_gcm_client_deliver_async); /* * Keep the list of identities around until we receive our result. * We need them to key with the resulting array. */ list = g_list_copy(identities); g_list_foreach(list, (GFunc)g_object_ref, NULL); g_object_set_data_full(G_OBJECT(simple), "identities", list, _push_gcm_identities_free); soup_session_queue_message(SOUP_SESSION(client), request, push_gcm_client_deliver_cb, simple); EXIT; }
gint main (gint argc, gchar ** argv) { JSGlobalContextRef ctx; JSStringRef str; JSObjectRef func; JSValueRef result; JSValueRef exception = NULL; JsonObject *obj; JsonNode *node; g_type_init(); gchar *buffer; if (argc != 2) { printf ("Usage: %s <script>\n", argv[0]); return 1; } ctx = JSGlobalContextCreate (NULL); str = JSStringCreateWithUTF8CString ("emitIntermediate"); func = JSObjectMakeFunctionWithCallback (ctx, str, js_emitIntermediate); JSObjectSetProperty (ctx, JSContextGetGlobalObject (ctx), str, func, kJSPropertyAttributeNone, NULL); JSStringRelease (str); str = JSStringCreateWithUTF8CString ("emit"); func = JSObjectMakeFunctionWithCallback (ctx, str, js_emit); JSObjectSetProperty (ctx, JSContextGetGlobalObject (ctx), str, func, kJSPropertyAttributeNone, NULL); JSStringRelease (str); str = JSStringCreateWithUTF8CString (argv[1]); result = JSEvaluateScript (ctx, str, NULL, NULL, 0, &exception); JSStringRelease (str); obj = json_object_new (); if (!result || exception) { js_value (ctx, exception, &node); json_object_set_member (obj, "error", node); json_object_set_boolean_member (obj, "status", FALSE); JSGlobalContextRelease (ctx); } else { json_object_set_boolean_member (obj, "status", TRUE); } JsonNode *node1 = json_node_new (JSON_NODE_OBJECT); if (node1 == NULL) { json_object_unref (obj); JSGlobalContextRelease (ctx); return 1; } json_node_set_object (node1, obj); JsonGenerator *gen = json_generator_new(); if (gen == NULL) { json_node_free (node1); JSGlobalContextRelease (ctx); return 1; } json_generator_set_root (gen, node1 ); buffer = json_generator_to_data (gen,NULL); if (buffer == NULL) { json_node_free (node1); JSGlobalContextRelease (ctx); return 1; } json_node_free (node1); puts (buffer); g_free (buffer); JSGlobalContextRelease (ctx); return 0; }