コード例 #1
0
ファイル: Namespace.cpp プロジェクト: vamitrou/JSONDroid
void Namespace::insert(const char* str)
{

	int count = 0;

	bson** bs = json_to_bson(str, count);

	Extent* lastExtent = getLastExtent();
	int success = 0;
	for (int i(0); i < count; i++)
	{
		success = lastExtent->addRecord(bs[i]);

		while (success != 0)
		{
			db->attachExtent(this);

			lastExtent = getLastExtent();
			success = lastExtent->addRecord(bs[i]);
		}

		free(bs[i]);
	}
	free(bs);
}
コード例 #2
0
ファイル: tut_json2bson.c プロジェクト: 3d0c/libmongo-client
static void
json_key_to_bson_key (bson *b, void *val,
		      const gchar *key)
{
  switch (json_object_get_type (val))
    {
    case json_type_boolean:
      bson_append_boolean (b, key, json_object_get_boolean (val));
      break;
    case json_type_double:
      bson_append_double (b, key, json_object_get_double (val));
      break;
    case json_type_int:
      bson_append_int32 (b, key, json_object_get_int (val));
      break;
    case json_type_string:
      bson_append_string (b, key, json_object_get_string (val), -1);
      break;
    case json_type_object:
      {
	bson *sub;

	sub = json_to_bson (val);
	bson_append_document (b, key, sub);
	bson_free (sub);
	break;
      }
    case json_type_array:
      {
	gint pos;
	bson *sub;

	sub = bson_new ();

	for (pos = 0; pos < json_object_array_length (val); pos++)
	  {
	    gchar *nk = g_strdup_printf ("%d", pos);

	    json_key_to_bson_key (sub, json_object_array_get_idx (val, pos),
				  nk);
	    g_free (nk);
	  }
	bson_finish (sub);

	bson_append_array (b, key, sub);
	bson_free (sub);
	break;
      }
    default:
      break;
    }
}