使用jsoncpp解析生成json
在此站点下载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相关推荐
- C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档
Swifter.Json 是由本人编写的高性能且多功能的 Json 解析库.下图是 Swifter.Json 与 .Net 平台上的其他 Json 库性能对比: 在 Swifter.Json 近期更新 ...
- linux c 解析生成json(jansson安装和使用)
Jansson是用于编码,解码和生成JSON数据的C语言库.它的特性: 简单直观的API和数据模型 全面的文档 不依赖其他库 全面支持Unicode(UTF-8) 大量测试套件 0.下载jansson ...
- jsoncpp解析json报文测试
JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式. ...
- mysql 动态sql 解析json数据_在SQL 中生成JSON数据
这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...
- 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 ...
- java 生成json数据_解析和生成JSON数据
JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值.它对外部(External: 应用toString()方法输出的数值)调 ...
- iOS json解析 和生成json串
1.生成json字符串 NSData * jsonData = [NSJSONSerialization dataWithJSONObject:detailDic options:0 error:ni ...
- Go Web编程--解析JSON请求和生成JSON响应
现在无论是网站.App.小程序还是移动端H5页面应用,都是采用前端与后端单独部署,相互之间以API接口交互的形式构建而成的.因为在结合可读性.编码数据大小和开发者使用难度上都JSON格式是一个比较好的 ...
- Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)
1. Json 概述 Go 语言对于标准格式的编码和解码都有良好的支持,由标准库中的 encoding/json . encoding/xml . encoding/asn1 等包提供支持并且这类包都 ...
最新文章
- 数据对拍代码 c++
- 收藏表数据库_选择您的收藏库
- 【Cocos得知】技术要点通常的积累
- 为吸引三星建170亿美元芯片厂,德克萨斯州将提供大额财产税减免
- 【计蒜客2017NOIP模拟赛1】
- 什么样的状态该跳槽了?
- 大型计算机grads使用,win10中GRADS出现FAST_CWD pointer错误的详细解决方法
- Android 图片自动放大/缩小循环执行
- 限制计算机用户使用指定软件,电脑使用时间限制软件(Time Boss)
- android 360 root权限获取root权限,安卓手机如何Root 使用360手机助手获取root权限图为教程...
- c/c++背景颜色和字体颜色
- 第三方应用调用高德地图
- 什么是独立站,独立站的作用是什么?
- 微星z370安装linux系统,在MSI z370主板上安装win7和BIOS设置的详细教程
- HEVC/H.265理论知识(2)——profile、level、tier
- 怎样用两部手机同时登陆一个QQ(两部手机同时在线)
- mtd分区创建linux,浅析linux下mtd设备onenand存储器的分区和节点创建流程及yaffs2文件系统挂载...
- NGINX服务器运维
- 在VIM3开发板上运行无修改的iOS内核镜像
- 分享两个免费在线shell
热门文章
- AMIO编辑器开发(四):五一劳动节的编程较量,C++语言的设计模式
- 如何设置任务栏和开始菜单属性中的 分组相似任务栏按钮 的个数
- AndroidStudio_开发工具的设置_界面设置_字体设置_使用习惯设置_按钮设置等一些设置的介绍---Android原生开发工作笔记71
- 微服务升级_SpringCloud Alibaba工作笔记0014---Nacos简介和下载_10万微服务实例在线管理
- MyCat分布式数据库集群架构工作笔记0012---高可用_Mycat双主双从复制原理
- 持续集成部署Jenkins工作笔记0019---19.在Jenkins中指定Git客户端位置
- STM32工作笔记0028---上拉电阻,下拉电阻
- detectron2 demo cuda10.0 py3.6
- vs资源视图加载失败
- 提高代码的运行效率(1)