rapidjson 嵌套json_[整理][RapidJson用法2]C++之RapidJson创建嵌套数组json | 勤奋的小青蛙...

本文介绍了如何使用RapidJson库在C++中创建包含嵌套数组的JSON文本。示例代码展示了如何构建JSON对象,并输出生成的JSON字符串。

上篇博文里我通过RapidJson解析了嵌套的json文本,那么本文章是RapidJson创建嵌套数组Json文本。

代码:

#include "rapidjson/document.h"

#include "rapidjson/writer.h"

#include "rapidjson/stringbuffer.h"

#include

using namespace rapidjson;

int main() {

// 1. Parse a JSON string into DOM.

const char* json ="{\"Info\":[{\"lots\":10,\"order_algorithm\":\"01\",\"buy_close\":9000,\"spread_shift\":0,\"position_b_sell\":0,\"position_a_buy_today\":0,\"position_a_buy_yesterday\":0,\"sell_open\":-9000,\"list_instrument_id\":[\"rb1705\",\"rb1701\"],\"position_b_buy_today\":0,\"buy_open\":-9000,\"position_a_sell_yesterday\":0,\"strategy_id\":\"02\",\"position_b_buy\":0,\"a_wait_price_tick\":1,\"trade_model\":\"boll_reversion\",\"b_wait_price_tick\":0,\"sell_close\":9000,\"only_close\":0,\"order_action_limit\":400,\"is_active\":1,\"lots_batch\":1,\"position_a_sell\":0,\"position_b_buy_yesterday\":0,\"user_id\":\"063802\",\"position_a_buy\":0,\"trader_id\":\"1601\",\"position_a_sell_today\":0,\"stop_loss\":0,\"position_b_sell_today\":0,\"position_b_sell_yesterday\":0,\"on_off\":0},{\"lots\":20,\"order_algorithm\":\"02\",\"buy_close\":9000,\"spread_shift\":0,\"position_b_sell\":0,\"position_a_buy_today\":0,\"position_a_buy_yesterday\":0,\"sell_open\":-9000,\"list_instrument_id\":[\"ni1705\",\"ni1701\"],\"position_b_buy_today\":0,\"buy_open\":-9000,\"position_a_sell_yesterday\":0,\"strategy_id\":\"01\",\"position_b_buy\":0,\"a_wait_price_tick\":1,\"trade_model\":\"boll_reversion\",\"b_wait_price_tick\":0,\"sell_close\":9000,\"only_close\":0,\"order_action_limit\":400,\"is_active\":1,\"lots_batch\":1,\"position_a_sell\":0,\"position_b_buy_yesterday\":0,\"user_id\":\"063802\",\"position_a_buy\":0,\"trader_id\":\"1601\",\"position_a_sell_today\":0,\"stop_loss\":0,\"position_b_sell_today\":0,\"position_b_sell_yesterday\":0,\"on_off\":0}],\"MsgSendFlag\":0,\"MsgErrorReason\":\"IDorpassworderror\",\"MsgRef\":1,\"MsgType\":3,\"MsgResult\":0}";

//std::cout << json << std::endl;

//std::cout << "\n" << std::endl;

std::cout << "|==================|" << std::endl;

std::cout << "||rapidjson output||" << std::endl;

std::cout << "|==================|" << std::endl;

Document doc;

doc.SetObject();

rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();

doc.AddMember("MsgSendFlag", 1, allocator);

doc.AddMember("MsgErrorReason", "IDorpassworderror", allocator);

doc.AddMember("MsgRef", 1, allocator);

rapidjson::Value info_array(rapidjson::kArrayType);

for (int i = 0; i < 2; i++) {

rapidjson::Value info_object(rapidjson::kObjectType);

info_object.SetObject();

info_object.AddMember("lots", 10 + i, allocator);

info_object.AddMember("order_algorithm", "01", allocator);

rapidjson::Value instrument_array(rapidjson::kArrayType);

for (int j = 0; j < 2; j++) {

rapidjson::Value instrument_object(rapidjson::kObjectType);

instrument_object.SetObject();

instrument_object.SetString("cu1701");

instrument_array.PushBack(instrument_object, allocator);

}

info_object.AddMember("list_instrument_id", instrument_array, allocator);

info_array.PushBack(info_object, allocator);

}

doc.AddMember("Info", info_array, allocator);

// 3. Stringify the DOM

StringBuffer buffer;

Writer writer(buffer);

doc.Accept(writer);

std::cout << buffer.GetString() << std::endl;

return 0;

}

运行效果所创建的JSON文本为:

{

"MsgSendFlag": 1,

"MsgErrorReason": "IDorpassworderror",

"MsgRef": 1,

"Info": [

{

"lots": 10,

"order_algorithm": "01",

"list_instrument_id": [

"cu1701",

"cu1701"

]

},

{

"lots": 11,

"order_algorithm": "01",

"list_instrument_id": [

"cu1701",

"cu1701"

]

}

]

}

其JSON格式化视图如下:

文章的脚注信息由WordPress的wp-posturl插件自动生成

|2|left

打赏

微信扫一扫,打赏作者吧~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值