转载:MongoDB C Driver中的BSON和JSON字符串的相互转换

由于编译的C++版本的MongoDB库中的一些函数名,和其他第三方库(zmq、czmq冲突),时间仓促没时间去研究添加MongoDB的内部命名空间的一些方法,去避免冲突。而是选择了更加简单粗暴的方法,直接用MongoDB C Driver。

记录一下BSON类型的一些使用方法。

参考的是官网的参考文档:http://mongoc.org/libmongoc/current/tutorial.html#creating-bson-documents


(1)利用JSON字符串来创建BSON

#include <bson.h>

int
main (int   argc,
      char *argv[])
{
   bson_error_t error;
   bson_t      *bson;
   char        *string;

   const char *json = "{\"name\": {\"first\":\"Grace\", \"last\":\"Hopper\"}}";
   bson = bson_new_from_json ((const uint8_t *)json, -1, &error);

   if (!bson) {
      fprintf (stderr, "%s\n", error.message);
      return EXIT_FAILURE;
   }

   string = bson_as_canonical_extended_json (bson, NULL);
   printf ("%s\n", string);
   bson_free (string);

   return 0;
}

亲测可用,就是利用bson_new_from_json函数,将const char *类型的json字符串生成bson。

bson_t *
bson_new_from_json (const uint8_t *data, ssize_t len, bson_error_t *error);

该函数的官网参考地址:http://mongoc.org/libbson/current/bson_new_from_json.html


(2)将bson转换成json字符串

char *
bson_as_canonical_extended_json (const bson_t *bson, size_t *length);

上面的例子中有利用这个函数,将bson转换成char *类型的json字符串。先记录这么多,后续会把自己利用C语言版的mongoDb的一些增删查改的具体实现过程记录下来。

bson API的官网地址:http://mongoc.org/libbson/current/api.html

MongoDB C Driver 1.12.0的文档地址:http://mongoc.org/libmongoc/current/api.html

关于char*如何利用QJSON生成json字符串,以及利用QJSon对json字符串进行解析,可以参考:

https://blog.csdn.net/hp_cpp/article/details/80338116

https://blog.csdn.net/hp_cpp/article/details/80208116


————————————————

版权声明:本文为CSDN博主「hp_cpp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/hp_cpp/article/details/82454584
原文链接: https://www.cnblogs.com/liweikuan/p/14458946.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/208495

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午11:25
下一篇 2023年2月12日 下午11:26

相关推荐