#include <iostream>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <string>
C++ 基于RapidJson库修改json中指定元素的值
using namespace std;
using namespace rapidjson;
void fun02()
string strJson = "{\"name\":\"张三\",\"gender\":\"男\",\"age1\":20}";
std::cout << "修改前:" << strJson << endl;
Document doc;
doc.SetObject();
Document::AllocatorType & allocator = doc.GetAllocator();
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
if (!doc.Parse(strJson.c_str()).HasParseError())
if (doc.HasMember("name"))
doc["name"].SetString("赵六");
else
doc.AddMember("name", "赵六",allocator);
if (doc.HasMember("age"))
doc["age"].SetInt(30);
doc.AddMember("age", 30, allocator);
doc.Accept(writer);
string str = buffer.GetString();
std::cout << "修改后:" << str << endl;
int main(int argv, char *argc[])
fun02();
system("pause");
return 0;
如果,不进行元素判断,当元素不存在时,会出现如下错误:
// 请自己下载开源的rapidjson
#include rapidjson/prettywriter.h
#include rapidjson/rapidjson.h
#include rapidjson/document.h
#include rapidjson/stringbuffer.h
#include rapidjson/writer.h
#include rapidjson/memorystr
#include <rapidjson/document.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/pointer.h>
#include <rapidjson/writer.h>
#include <rapidjson/prettywriter.h>
#incl...
首先,json(JavaScript objection notation)是一种轻量级的数据交换格式,正是由于其轻量的这个特点,经常替代程序中的变量、对象,被用作程序之间数据传输的格式。
rapidjson?是不是听起来很耳熟,想到了java中使用的fastjson这个依赖,fastjson用来进行java对象和json数据格式之间的转换,一个rapid一个fast哈哈哈,知道你们都是轻量级的了。
rapidjson一个应用在C++程序中json的生成器和解析器。
相较于jsoncpp库,rapid
为什么要学习解析Json文件?
工作需要呗!
最近在工作项目中,有需求是需要进行解析Json字符串的,但是我只会使用QT去解析Json,且主管规定要使用C/C++语言去解析,说是为了方便移植到其他项目中进行使用…
没办法,只能硬着头皮,在网上找找有没有什么解析Json的开源库是C/C++可以使用的。
找了许多,网上也提供了许多,最终我选择了cJOSN,不为什么,就是因为它小巧玲珑,且是纯C的!
花了一两周的悠闲时间去学习,把一些比较常用的解析的JSON字符串解析解析记录下来!
最后简单介绍一下json是什么
rapidjson中文使用手册
rapidjson的基本介绍、使用好处、解析速度等不在此篇讲述,因为在官网上已经讲得非常详细了,这里写的都是本人拙劣的见解,如有不足之处,烦请各位指出。
本文结构:
1、基本单元;
1、基本单元
rapidjson的基本操作单元:Document以及Value
例:当有一个json案例,请让我们称之为te...
利用rapidjson实现未知json数据的解析,拿到每一个key和value,用vs2010实现。
引用头文件
#include "rapidjson/document.h"
#include
using namespace std;
string strJsonTest = "{\"item_1\":\"value_1\",\"item_2\":\"value_2\"
c
JSON* x
json = c
JSON_CreateObject();
c
JSON_AddItemToObject(x
json, "a", c
JSON_CreateString("aaa"));
c
JSON_AddItemToObject(x
json, "b", c
JSON_CreateNumber(1));
char *buf1 = c
JSON_Print(x
json);
printf("%s\n",buf1 ); //{"a":1,"b":"aaa"}
rapidjson是一个高效的C++ JSON解析/生成器,具有小而全、快且独立等优点,具体用法如下
1、基本单元
rapidjson的基本操作单元:Document以及Value
例:当有一个json案例,请让我们称之为test.json
"test_int": 100,
"test_float": 100.9,
"test_string": "asd",
"test_float_array": [],
"test_object": {
"vec_key": [9, 3, 5, 7, 2
r
apid
json为了最大化性能,大量使用了浅拷贝,使用之前一定要了解清楚。
如果采用了浅拷贝,特别要注意局部对象的使用,以防止对象已被析构了,却还在被使用。
输出r
apid
json解析错误信息
#include "r
apid
json/document.h"
#include...
RapidJSON是一个 C++ 的 JSON 解析器及生成器。它的灵感来自 RapidXml。
RapidJSON 小而全。它同时支持 SAX 和 DOM 风格的 API。SAX 解析器只有约 500 行代码。
RapidJSON 快。它的性能可与 strlen() 相比。可支持 SSE2/SSE4.2 加速。
RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至不依赖于 STL。
RapidJSON 对内存友好。在大部分 32/64 位机器上,每个 JSON 值只占 16 字节(除字符串
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
int main() {
// 构造 JSON 文档
Document doc(kObjectType);
doc.SetArray();
// 添加两个对象到数组中
for (int i = 0; i < 2; ++i) {
Value obj(kObjectType);
obj.AddMember("name", "Alice", doc.GetAllocator());
obj.AddMember("age", 20 + i, doc.GetAllocator());
doc.PushBack(obj, doc.GetAllocator());
// 将 JSON 文档序列化为字符串
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
doc.Accept(writer);
// 输出 JSON 字符串
std::cout << buffer.GetString() << std::endl;
return 0;
输出结果为:
```json
[{"name":"Alice","age":20},{"name":"Alice","age":21}]
在上述代码中,我们首先构造了一个空的 JSON 文档,并将其设置为数组类型。然后,我们添加了两个对象到数组中,每个对象包含了两个属性:`name` 和 `age`。最后,我们使用 `Writer` 类将 JSON 文档序列化为字符串,并输出该字符串。