JsonCpp解析和读写Json字符串
时间:2020年5月17日11:37:10
JsonCPP 改版了,以前的 Json::Reader, Json::Parse被弃用了,得用新的方法。
JsonCpp项目地址:https://github.com/open-source-parsers/jsoncpp/blob/master/doc/jsoncpp.dox
下面的Demo,可以实现 读取json字符串、创造json对象、输出json字符串。
主要的函数是这4个函数:
Json::StreamWriterBuilder,
Json::writeString
Json::CharReaderBuilder
Json::parseFromStream
#include <iostream> #include <string> #include "../include/json/json.h" using namespace std; // g++ demo1.cpp -I ../include ./lib_json/libjsoncpp.a -std=c++11 int main() { Json::Value objectRoot; objectRoot["id"] = 1234; objectRoot["name"] = "henry"; cout <<"------------StreamWriterBuilder------------"<<endl; Json::StreamWriterBuilder wbuilder; wbuilder["indentation"] = ""; // wbuilder["indentation"] = "\t"; std::string document = Json::writeString(wbuilder, objectRoot); cout <<"StreamWriterBuilder: "<<document<<endl; char strBuf[]="{ \"id\":666, \"name\":\"henryHe\"}"; cout <<"------------CharReaderBuilder------------"<<endl; std::istringstream iss(strBuf); ////必须得强制类型转换 Json::Value readValue; Json::CharReaderBuilder rbuilder; rbuilder["collectComments"] = false; std::string errs; bool ok = Json::parseFromStream(rbuilder, iss , &readValue, &errs); cout <<"ok: "<<ok<<endl; cout <<"id: "<<readValue["id"]<<endl; cout <<"name: "<<readValue["name"]<<endl; // const std::string rawJson = R"({"Age": 20, "Name": "colin"})"; // const int rawJsonLength = static_cast<int>(rawJson.length()); // cout << rawJsonLength<<endl; // cout << rawJson<<endl; cout <<"hello world"<<endl; return 0; }
说明:项目中的 libjsoncpp.a 是我根据 JsonCpp 工程的源码编译的 库。
直接下载JsonCpp工程,解压之后,执行
cmake ./ make -f Makefile
如果没有安装CMake,请看这里:https://www.cnblogs.com/music-liang/p/12900511.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?