在此站点下载jsoncpp(https://sourceforge.net/projects/jsoncpp/这个站点的版本较旧)

在电脑上安装Python,运行amalgamate.py,生成的dist目录中包含了我们需要的源文件和头文件

以下是使用jsoncpp解析与生成json的示例代码,

其中json_text.txt的内容为(关于此json数据的来源可参考此站点)

{"face":[{"attribute":{"age":27,"gender":"Male","lefteye_opendegree":43,"mouth_opendegree":2,"pose":{"raise":-21,"tilting":-2,"turn":4},"righteye_opendegree":47},"face_id":"83e3edac3d5d49579089d3ee043d41ec","position":{"center":{"x":179,"y":50},"eye_left":{"x":206,"y":78},"eye_right":{"x":248,"y":78},"height":94,"width":94},"tag":""}],"img_height":500,"img_id":"030-3aff983ea4ea5a35f89ae6","img_width":350,"res_code":"0000","url":"http://e.hiphotos.baidu.com/baike/pic/item/9345d688d43f879428d347b3d81b0ef41bd53a7a.jpg"
}

jsoncpp_parse_test.cpp

#include <iostream>
#include <fstream>
#include "jsoncpp/json.h"
int main()
{using namespace std;using namespace Json;ifstream ifs("json_text.txt");if (ifs){string line, jsonStr;while (getline(ifs, line))jsonStr.append(line);CharReader *reader = CharReaderBuilder().newCharReader();Value root;JSONCPP_STRING errs;if (reader->parse(jsonStr.c_str(), jsonStr.c_str() + jsonStr.size(), &root, &errs)){auto faceId = root["face"][0]["face_id"].asString();auto imgWidth = root["img_width"].asInt();auto imgHeight = root["img_height"].asInt();auto resCode = root["res_code"].asString();auto url = root["url"].asString();cout << "face_id:\t" << faceId << endl;cout << "img_width:\t" << imgWidth << endl;cout << "img_height:\t" << imgHeight << endl;cout << "res_code:\t" << resCode << endl;cout << "url:\t\t" << url << endl;}elsecout << errs << endl;delete reader;}return 0;
}

jsoncpp_generate_test.cpp

#include <iostream>
#include <memory>
#include "jsoncpp/json.h"
int main()
{std::unique_ptr<Json::StreamWriter> writer(Json::StreamWriterBuilder().newStreamWriter());Json::Value array, element;element["face_id"] = "a9cebf8d5ae6fff514d8d2d8e07fa55b";element["similarity"] = 100;element["img_id"] = "12.jpg";element["people_name"] = "张艺谋";array["result"].append(element);element["face_id"] = "7f2de0e85bede3171c839d0dcabd849f";element["similarity"] = 55.379097;element["img_id"] = "6.jpg";element["people_name"] = "曾国藩";array["result"].append(element);element["face_id"] = "40ebb31e8af7237a73dec9f242885a7e";element["similarity"] = 52.59766;element["img_id"] = "2.jpg";element["people_name"] = "测试";array["result"].append(element);//std::ostringstream ss;if (writer->write(array, &std::cout))std::cout << "write failed" << std::endl;elsestd::cout << std::endl;return 0;
}

Compile.bat

g++ -std=c++11 jsoncpp_parse_test.cpp jsoncpp/jsoncpp.cpp -o jsoncpp_parse_test
g++ -std=c++11 jsoncpp_generate_test.cpp jsoncpp/jsoncpp.cpp -o jsoncpp_generate_test

转载于:https://www.cnblogs.com/buyishi/p/8655047.html

使用jsoncpp解析生成json相关推荐

  1. C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档

    Swifter.Json 是由本人编写的高性能且多功能的 Json 解析库.下图是 Swifter.Json 与 .Net 平台上的其他 Json 库性能对比: 在 Swifter.Json 近期更新 ...

  2. linux c 解析生成json(jansson安装和使用)

    Jansson是用于编码,解码和生成JSON数据的C语言库.它的特性: 简单直观的API和数据模型 全面的文档 不依赖其他库 全面支持Unicode(UTF-8) 大量测试套件 0.下载jansson ...

  3. jsoncpp解析json报文测试

    JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式. ...

  4. mysql 动态sql 解析json数据_在SQL 中生成JSON数据

    这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...

  5. java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串

    文章目录 1. 详说json 1.1 何为json 1.2 json语法 2. Java解析与生成JSON的四种方式 2.1 传统方式 2.2 利用Jackson方式 2.3 利用Gson方式 2.4 ...

  6. java 生成json数据_解析和生成JSON数据

    JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值.它对外部(External: 应用toString()方法输出的数值)调 ...

  7. iOS json解析 和生成json串

    1.生成json字符串 NSData * jsonData = [NSJSONSerialization dataWithJSONObject:detailDic options:0 error:ni ...

  8. Go Web编程--解析JSON请求和生成JSON响应

    现在无论是网站.App.小程序还是移动端H5页面应用,都是采用前端与后端单独部署,相互之间以API接口交互的形式构建而成的.因为在结合可读性.编码数据大小和开发者使用难度上都JSON格式是一个比较好的 ...

  9. Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)

    1. Json 概述 Go 语言对于标准格式的编码和解码都有良好的支持,由标准库中的 encoding/json . encoding/xml . encoding/asn1 等包提供支持并且这类包都 ...

最新文章

  1. 数据对拍代码 c++
  2. 收藏表数据库_选择您的收藏库
  3. 【Cocos得知】技术要点通常的积累
  4. 为吸引三星建170亿美元芯片厂,德克萨斯州将提供大额财产税减免
  5. 【计蒜客2017NOIP模拟赛1】
  6. 什么样的状态该跳槽了?
  7. 大型计算机grads使用,win10中GRADS出现FAST_CWD pointer错误的详细解决方法
  8. Android 图片自动放大/缩小循环执行
  9. 限制计算机用户使用指定软件,电脑使用时间限制软件(Time Boss)
  10. android 360 root权限获取root权限,安卓手机如何Root 使用360手机助手获取root权限图为教程...
  11. c/c++背景颜色和字体颜色
  12. 第三方应用调用高德地图
  13. 什么是独立站,独立站的作用是什么?
  14. 微星z370安装linux系统,在MSI z370主板上安装win7和BIOS设置的详细教程
  15. HEVC/H.265理论知识(2)——profile、level、tier
  16. 怎样用两部手机同时登陆一个QQ(两部手机同时在线)
  17. mtd分区创建linux,浅析linux下mtd设备onenand存储器的分区和节点创建流程及yaffs2文件系统挂载...
  18. NGINX服务器运维
  19. 在VIM3开发板上运行无修改的iOS内核镜像
  20. 分享两个免费在线shell

热门文章

  1. AMIO编辑器开发(四):五一劳动节的编程较量,C++语言的设计模式
  2. 如何设置任务栏和开始菜单属性中的 分组相似任务栏按钮 的个数
  3. AndroidStudio_开发工具的设置_界面设置_字体设置_使用习惯设置_按钮设置等一些设置的介绍---Android原生开发工作笔记71
  4. 微服务升级_SpringCloud Alibaba工作笔记0014---Nacos简介和下载_10万微服务实例在线管理
  5. MyCat分布式数据库集群架构工作笔记0012---高可用_Mycat双主双从复制原理
  6. 持续集成部署Jenkins工作笔记0019---19.在Jenkins中指定Git客户端位置
  7. STM32工作笔记0028---上拉电阻,下拉电阻
  8. detectron2 demo cuda10.0 py3.6
  9. vs资源视图加载失败
  10. 提高代码的运行效率(1)