jsoncpp 解析json

前端之家收集整理的这篇文章主要介绍了jsoncpp 解析json前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org/,本文不再对json做介绍,将重点介绍c++的json解析库的使用方法。json官网上列出了各种语言对应的json解析库。下面的教程会介绍如何用jsoncpp库来解析json数据。


1、安装jsoncpp

下载:

  1. git clone https://github.com/open-source-parsers/jsoncpp.git

解压后,进入jsoncpp的根目录编译:

  1. scons platform=linux-gcc

之后会在libs目录下生成两个哭文件,一个静态库的一个动态库:

libjson_linux-gcc-4.6_libmt.so,libjson_linux-gcc-4.6_libmt.a


将这两个库文件拷贝到/usr/local/lib,然后在终端执行:

  1. sudo /sbin/ldconfig
现在可以使用jsoncpp库文件了。



测试程序:

  1. /*
  2. g++ json_test.cpp -ljson_linux-gcc-4.8_libmt -o json_test
  3. */
  4. //json的key字符流按照地一个字母的大小排序
  5.  
  6. #include <json/json.h>
  7. #include <string>
  8. #include <stdlib.h>
  9. #include <iostream>
  10. #include <fstream>
  11.  
  12. //#define READ
  13. using namespace std;
  14.  
  15. int main()
  16. {
  17. #ifdef READ
  18. ifstream is;
  19. is.open ("JsonText",std::ios::binary );
  20. Json::Reader reader;
  21. Json::Value root;
  22. if(reader.parse(is,root)) ///root保存整个Json对象的value
  23. {
  24. if(!root["name"].isNull())
  25. {
  26. cout<<root["name"].asString()<<endl; ///读取元素
  27. Json::Value arrayObj = root["array"];
  28. for(int i=0 ; i< arrayObj.size() ;i++)
  29. {
  30. cout<<arrayObj[i].asString()<<endl;
  31. }
  32. }
  33. }
  34. #else
  35. Json::Value root;
  36. Json::Value arrayObj;
  37. Json::Value item;
  38. for (int i = 0; i < 2; i ++)
  39. {
  40. arrayObj.append(i); ///给arrayObj中添加元素(arrayObj变为数组)
  41. }
  42. root["key1"] = "value1"; ///给root中添加属性(arrayObj变为map)
  43. root["key2"] = "value2";
  44. root["array"] = arrayObj;
  45. root["b"] ="bob";
  46. std::string out = root.toStyledString(); ///转换为json格式字符串
  47. std::cout << out << std::endl;
  48.  
  49. #endif
  50. return 0;
  51. }
  52. /*
  53.  
  54. {
  55. "name": "json","array": [
  56. "123","456","789"
  57. ]
  58. }
  59.  
  60. */
  61.  



编译:

  1. g++ json_test.cpp -ljson_linux-gcc-4.8_libmt -o json_test




运行:

  1. {
  2. "array" : [ 0,1 ],"b" : "bob","key1" : "value1","key2" : "value2"
  3. }

可以看到其中key排列顺序是按照key的第一个字母在字母表中的顺序排列的





参考:

http://www.cnblogs.com/xudong-bupt/p/3696329.html

猜你在找的Json相关文章