Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4519211
  • 博文数量: 356
  • 博客积分: 10458
  • 博客等级: 上将
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 14:59
文章分类

全部博文(356)

文章存档

2020年(17)

2019年(9)

2018年(26)

2017年(5)

2016年(11)

2015年(20)

2014年(2)

2013年(17)

2012年(15)

2011年(4)

2010年(7)

2009年(14)

2008年(209)

分类: C/C++

2020-03-24 14:29:23

rapidjson是腾讯开源的解析json的高效c++库,这里做个简单的封装,除去每次解析时都要先判断结点是否存在再读取的麻烦

github地址

因为是封装,所以依赖rapidjson,请自行下载rapidjson源码,使用示例如下

点击(此处)折叠或打开

  1. const char *JSON = "{" ""double":100.11," ""int":200," ""str":"Hello World"," ""bool":false" "}";
  2.  
  3. rapidjson::Document d;
  4.  
  5. d.Parse(JSON);
  6.  
  7. if (d.HasParseError()) { printf( "parse error!\n" ); return -1; }
  8.  
  9. uint32_t uvalue;
  10.  
  11. assert(!Wrapidjson::GetUint(d, "uintvalue", &uvalue));
  12.  
  13. assert(Wrapidjson::HasDouble(d, "double"));
  14.  
  15. double dvalue;
  16.  
  17. assert(Wrapidjson::GetDouble(d, "double", &dvalue));
  18.  
  19. assert(dvalue == 100.11);
  20.  
  21. assert(!Wrapidjson::HasDouble(d, "int"));
  22.  
  23. int ivalue;
  24.  
  25. assert(Wrapidjson::GetInt(d, "int", &ivalue));
  26.  
  27. assert(ivalue == 200);
  28.  
  29. bool bvalue;
  30.  
  31. assert(Wrapidjson::GetBool(d, "bool", &bvalue));
  32.  
  33. assert(bvalue == false);
  34.  
  35. std::string svalue;
  36.  
  37. assert(Wrapidjson::GetString(d, "str", &svalue));
  38.  
  39. assert(svalue == std::string("Hello World"));

作者:帅得不敢出门

阅读(2370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~