jsoncpp,rapidjson语法整理

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

项目中需要将jsoncpp转为rapidjson (经过测试,rapidjson解析性能优于jsoncpp),现将两者语法整理分享

推荐:rapidjson官方中文文档http://miloyip.github.io/rapidjson/zh-cn/

file.json:


  1. {file: {key: "value",array: [{key00: "value00",key01: "value01" },{key10: "value10",key11: "value11"}]}}

rapidjson语法:

  1. #include <iostream>
  2. #include <fstream>
  3. #include <sstream>
  4. #include "rapidjson/rapidjson.h"
  5. #include "rapidjson/document.h"
  6. #include "rapidjson/stringbuffer.h"
  7. #include "rapidjson/writer.h"
  8.  
  9. int main()
  10. {
  11. //读取文件
  12. std::fstream fs("file.json");
  13. if(!fs)
  14. std::cout<<std::endl<<"file open Failed"<<std::endl;
  15. std::stringstream ss;
  16. ss << fs.rdbuf();
  17. std::string str = ss.str();
  18.  
  19. //解析
  20. rapidjson::Document doc;
  21. if (doc.Parse(str.c_str()).HasParseError())
  22. std::cout<<std::endl<<"parse Failed"<<std::endl;
  23.  
  24. rapidjson::Document::AllocatorType&allocator = doc.GetAllocator(); // 获取最初数据的分配器
  25. //增加元素
  26. doc["file"].AddMember("key2","value2",allocator);
  27. //删除元素
  28. doc["file"].RemoveMember("key");
  29.  
  30. //修改
  31. doc["file"]["key2"].SetString("newValue");
  32.  
  33. //数组操作//
  34.  
  35. rapidjson::Value& array = doc["file"]["array"];//获取数组对象
  36. //添加数组对象
  37. rapidjson::Value item(rapidjson::kObjectType); //创建数组里面对象
  38. item.AddMember("key20","value20",allocator);
  39. item.AddMember("key21","value21",allocator);
  40. array.PushBack(item,allocator);
  41. //读取数组元素
  42. if(array[2].HasMember("key20"))//查找是否存在
  43. std::cout<<std::endl<<array[2]["key20"].GetString()<<std::endl;
  44.  
  45. //删除数组最后一个元素
  46. array.PopBack();
  47.  
  48. //输出
  49. rapidjson::StringBuffer buffer;
  50. rapidjson::Writer< rapidjson::StringBuffer > writer(buffer);
  51. doc.Accept(writer);
  52. std::string out = buffer.GetString();
  53.  
  54. std::cout<<std::endl<<out<<std::endl;
  55.  
  56. }

jsoncpp语法:

  1. #include <iostream>
  2. #include <fstream>
  3. #include <jsoncpp/jsoncpp.h>
  4.  
  5. int main()
  6. {
  7. //读取文件
  8. std::fstream fs("file.json");
  9.  
  10. if(!fs)
  11. std::cout<<std::endl<<"file open Failed"<<std::endl;
  12. //解析
  13. Json::Reader reader;
  14. Json::Value root;
  15.  
  16. if(!reader.parse(fs,root))
  17. std::cout<<std::endl<<"parse Failed"<<std::endl;
  18.  
  19. //修改元素值
  20. root["file"]["key"] = Json::Value("1");
  21.  
  22. //删除元素
  23. root["file"].removeMember("key");
  24.  
  25. //添加元素
  26. root["file"]["key2"] = Json::Value("value2");
  27. //数组操作
  28. Json::Value& array = root["file"]["array"]; //获取数组
  29. //删除,读取数组元素
  30. for(int i = 0; i < array.size(); i++)
  31. {
  32. if(array[i].isMember("key00"))
  33. array[i].removeMember("key00");
  34.  
  35. if(!array[i].isMember("key01"))
  36. continue;
  37. std::string out = array[i]["key01"].asString();
  38. std::cout<<std::endl<<"key01: "<<out<<std::endl;
  39. }
  40.  
  41. //插入数组元素
  42. Json::Value item(Json::objectValue);
  43. item["key20"] = Json::Value("value20");
  44. item["key21"] = Json::Value("value21");
  45. array.append(item);
  46. //输出
  47. std::string out = root.toStyledString();
  48. std::cout<<std::endl<<out<<std::endl;
  49. }

猜你在找的Json相关文章