https://github.com/Tencent/rapidjson

jsontext.txt

{
"result" :
[
{
"face_id" : "a9cebf8d5ae6fff514d8d2d8e07fa55b",
"img_id" : "12.jpg",
"people_name" : "白活",
"similarity" : 100
},
{
"face_id" : "7f2de0e85bede3171c839d0dcabd849f",
"img_id" : "6.jpg",
"people_name" : "布伊什",
"similarity" : 55.379097
},
{
"face_id" : "40ebb31e8af7237a73dec9f242885a7e",
"img_id" : "2.jpg",
"people_name" : "布衣食",
"similarity" : 52.59766
}
]
}

rapidjson_test.cpp

#include <iostream>
#include <fstream>
#include <iomanip>
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
int main()
{
using namespace std;
using namespace rapidjson;
cout << "parsing test" << endl;
string line, jsonText;
ifstream ifs("json_text.txt");
while (getline(ifs, line))
jsonText.append(line);
Document document;
document.Parse(jsonText.c_str());
const auto &array = document["result"].GetArray();
for (const auto &e : array)
{
const auto &faceId = e["face_id"].GetString();
const auto &imgId = e["img_id"].GetString();
const auto &peopleName = e["people_name"].GetString();
const auto &similarity = e["similarity"].GetDouble();
cout << setprecision() << "face_id:\t" << faceId << endl;
cout << "img_id:\t\t" << imgId << endl;
cout << "people_name:\t" << peopleName << endl;
cout << "similarity:\t" << similarity << endl << endl;
}
cout << endl << "generating test" << endl;
Document d;
d.SetObject();
Document::AllocatorType &allocator = d.GetAllocator();
Value arr(kArrayType);
Value elem1(kObjectType);
elem1.AddMember("name", "沃夫", allocator);
elem1.AddMember("gender", "Male", allocator);
elem1.AddMember("age", , allocator);
arr.PushBack(elem1, allocator);
Value elem2(kObjectType);
elem2.AddMember("name", "布伊什", allocator);
elem2.AddMember("gender", "Female", allocator);
elem2.AddMember("age", , allocator);
arr.PushBack(elem2, allocator);
Value elem3(kObjectType);
elem3.AddMember("name", "布衣食", allocator);
elem3.AddMember("gender", "Male", allocator);
elem3.AddMember("age", , allocator);
arr.PushBack(elem3, allocator);
d.AddMember("result", arr, allocator);
StringBuffer strBuf;
Writer<StringBuffer> writer(strBuf);
d.Accept(writer);
cout << strBuf.GetString() << endl;
return ;
}

C++ JSON解析库RapidJSON的更多相关文章

  1. Tomjson - 一个"短小精悍"的 json 解析库

    Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把Java对象(JavaBean)序列化为json格式字符串,将json格式字符 ...

  2. fastjson是阿里巴巴的开源JSON解析库

    fastjson的API十分简洁. String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}&q ...

  3. python 中的json解析库

    当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...

  4. Tomjson - json 解析库

    Tomjson - 一个"短小精悍"的 json 解析库 Tomjson,一个"短小精悍"的 json 解析库,tomjson使用Java语言编写,主要作用是把 ...

  5. C++的Json解析库:jsoncpp和boost

    C++的Json解析库:jsoncpp和boost - hzyong_c的专栏 - 博客频道 - CSDN.NET C++的Json解析库:jsoncpp和boost 分类: 网络编程 开源库 201 ...

  6. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  7. C++的Json解析库:jsoncpp和boost(转)

    原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...

  8. 常用json解析库比较及选择 fastjson & gson

    一.常用json解析库比较及选择 1.简介 fastjson和gson是目前比较常用的json解析库,并且现在我们项目代码中,也在使用这两个解析库. fastjson 是由阿里开发的,号称是处理jso ...

  9. [转]C++的Json解析库:jsoncpp和boost

    JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的j ...

随机推荐

  1. hdu6073[dfs+删边] 2017多校4

    题目中对二分图的定义十分特殊, 指的是 U,V两部分中,U的顶点度数必定为2,V中顶点无限制. 题目要求的是 对于所有匹配,该匹配的权值=该匹配中选中的边的边权的乘积,求所有匹配权值之和. 对于V中的 ...

  2. 【Luogu】P1972HH的项链(链表+树状数组)

    题目链接 难题,所以会讲得细一些. 首先我们想如何统计区间[l,r]内不同贝壳的个数. 第一个思路就是线段树/树状数组,query(1,r)-query(1,l-1)对不对? 然而这样是不对的. 然后 ...

  3. PAT天梯赛练习题——L3-005. 垃圾箱分布(暴力SPFA)

    L3-005. 垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁 ...

  4. 关于java读取文件IO流学习总结(二)

    今天网上随意逛了逛,某处看到关于文件的操作,描述的不错,加深了对于文件操作的理解,在此分享给大家.希望能够有所收获. java读取txt文件内容: 可以作如下理解: 1. 首先获得一个文件句柄.Fil ...

  5. 【FFT求卷积】Problem D. Duel

    [AC] #include <stdio.h> #include <iostream> #include <string.h> #include <algor ...

  6. leetcode 350

    找两个数组的交叉部分,可以用map进行标记 首先对第一个数组进行记录,第二个数组在第一个数组记录基础上进行判断,如果在第一个数组出现过,就记录 class Solution { public: vec ...

  7. uva 550 有趣的乘法(dfs)

    题目大意:给三个数A(进制).B(如*****7的最后一个数字7).C(*****7*4的后面的因数4)求符合条件下的第一个因数的位数最少 例子: 179487 * 4 = 717948 (10进制) ...

  8. NOIP 前夕 模板整理

    归并排序: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ] ...

  9. 【HDOJ5979】Convex(三角函数)

    题意:n个点在一个半径为R的圆上,给出这n个点顺时针的夹角差值,求这n个点的凸包面积 n<=10,R<=10 思路:S=1/2*sinθ*a*b 角度转弧度再用sin C++有点小毛病,叫 ...

  10. 在GridView中的每一页末尾添加空行

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] protected void GridView1_RowCreated(object sender, GridVi ...