引用头文件:

#include <string>
#include <iostream>
#include <fstream>
#include <cassert>
#include <stdio.h>
#include <io.h>
#include<sstream>
#include <vector>
#include "CJsonObject.hpp" using namespace std;
using namespace neb;
CJsonObject Objson;
 __declspec(dllexport)  void  __stdcall read_JSon(char* path)
{
ifstream t(path);
string str((istreambuf_iterator<char>(t)),istreambuf_iterator<char>());
string strValue;
Objson= CJsonObject(str);
cout << "-------------------------------------------------------------------" << std::endl;}

加载JSON文件

     //保存JSON文件
__declspec(dllexport) void __stdcall write_string_to_file_append(char* file_string)
{
/*remove(file_string);*/
std::ofstream OsWrite(file_string, std::ofstream::trunc);
OsWrite << Objson.ToString();
OsWrite << std::endl;
OsWrite.close();
std::cout << "------------------执行完毕------------------------" << std::endl;
}

保存修改后的JSON结构

1.修改如下图数据结构:

 __declspec(dllexport)  void  __stdcall FxmWindDirectBaseLine(int num,  int count, char** pArr, int* sArr, int* iArr)
{ string iValue;
for (int i = ; i < Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].GetArraySize(); i++)
{
Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].Delete(i);
i--;
}
cout << "---------------" << endl;
cout << Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].GetArraySize() << endl;
CJsonObject je;
for (int i = ; i < count; i++)
{
iValue = pArr[i];
je.Add("p", iValue);
je.Add("s", sArr[i]);
je.Add("i", iArr[i]);
std::cout << "pArr:" << je.ToString() << std::endl;
Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].Add(je);
je.Clear();
}
cout <<"---------------" << endl;
for (int i = ; i < Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].GetArraySize(); i++)
{
cout << "mWindDirectBaseLine" << i << ":" << Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"][i]("p") << endl;
}
cout << "---------------" << endl;
}

修改mWindDirectBaseLine节点

2.修改如下图数据结构:

 __declspec(dllexport)  void  __stdcall UpmWindDirectBars(int num,int count, char** fpArr,int* fsArr, int* fiArr, char** hpArr, int* hsArr, int* hiArr)
{
string iValue;
for (int i = ; i < Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBars"].GetArraySize(); i++)
{
Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBars"].Delete(i);
i--;
}
cout << "---------------" << endl;
CJsonObject je;
for (int i = ; i < count; i++)
{
iValue = fpArr[i];
je.AddEmptySubObject("f");
je["f"].Add("p", iValue);
je["f"].Add("s", fsArr[i]);
je["f"].Add("i", fiArr[i]);
iValue = hpArr[i];
je.AddEmptySubObject("h");
je["h"].Add("p", iValue);
je["h"].Add("s", hsArr[i]);
je["h"].Add("i", hiArr[i]);
std::cout << "pArr:" << je.ToString() << std::endl;
Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBars"].Add(je);
je.Clear();
}
cout << "---------------" << endl;
}

修改mWindDirectBars节点

3.修改如下图数据结构:

 __declspec(dllexport)  void  UpHuxianArrays( int count, double* fpArr, double* fsArr, double* fiArr)
{
std::cout << "-------------------------------------------------------------------" << std::endl; for (int i = ; i <Objson["resultWindSpeedGrid"]["HuxianArrays"].GetArraySize(); i++)
{
Objson["resultWindSpeedGrid"]["HuxianArrays"].Delete(i);
i--;
}
cout << "Count:" << Objson["resultWindSpeedGrid"]["HuxianArrays"].GetArraySize() << endl;
cout << "---------------" << endl;
CJsonObject je;
for (int i = ; i < count; i++)
{
je.AddEmptySubArray("Params");
je["Params"].Add(fpArr[i]);
je["Params"].Add(fsArr[i]);
je["Params"].Add(fiArr[i]);
std::cout << "pArr:" << je.ToString() << std::endl;
Objson["resultWindSpeedGrid"]["HuxianArrays"].Add(je);
je.Clear();
}
Objson["resultWindSpeedGrid"].Replace("HuxianShu", Objson["resultWindSpeedGrid"]["HuxianArrays"].GetArraySize());
cout << "---------------" << endl;
}

修改HuxianArrays节点

官方案例:

 int iValue;
std::string strValue;
neb::CJsonObject oJson("{\"refresh_interval\":60,"
"\"dynamic_loading\":["
"{"
"\"so_path\":\"plugins/User.so\", \"load\":false, \"version\":1,"
"\"cmd\":["
"{\"cmd\":2001, \"class\":\"neb::CmdUserLogin\"},"
"{\"cmd\":2003, \"class\":\"neb::CmdUserLogout\"}"
"],"
"\"module\":["
"{\"path\":\"im/user/login\", \"class\":\"neb::ModuleLogin\"},"
"{\"path\":\"im/user/logout\", \"class\":\"neb::ModuleLogout\"}"
"]"
"},"
"{"
"\"so_path\":\"plugins/ChatMsg.so\", \"load\":false, \"version\":1,"
"\"cmd\":["
"{\"cmd\":2001, \"class\":\"neb::CmdChat\"}"
"],"
"\"module\":[]"
"}"
"]"
"}");
std::cout << oJson.ToString() << std::endl;
std::cout << "-------------------------------------------------------------------" << std::endl;
std::cout << oJson["dynamic_loading"][]["cmd"][]("class") << std::endl;
oJson["dynamic_loading"][]["cmd"][].Get("cmd", iValue);
std::cout << "iValue = " << iValue << std::endl;
oJson["dynamic_loading"][]["module"][].Get("path", strValue);
std::cout << "strValue = " << strValue << std::endl;
std::cout << "-------------------------------------------------------------------" << std::endl;
oJson.AddEmptySubObject("depend");
oJson["depend"].Add("nebula", "https://github.com/Bwar/Nebula");
oJson["depend"].AddEmptySubArray("bootstrap");
oJson["depend"]["bootstrap"].Add("BEACON");
oJson["depend"]["bootstrap"].Add("LOGIC");
oJson["depend"]["bootstrap"].Add("LOGGER");
oJson["depend"]["bootstrap"].Add("INTERFACE");
oJson["depend"]["bootstrap"].Add("ACCESS");
oJson["depend"].AddEmptySubArray("boot");
CJsonObject ject;
string iValues;
for (int i = ; i < count; i++)
{
iValues = pArr[i];
ject.Add("p", iValues);
ject.Add("s", );
ject.Add("i", -);
std::cout << "pArr:" << ject.ToString() << std::endl;
oJson["depend"]["boot"].Add(ject);
ject.Clear();
}
std::cout << oJson.ToString() << std::endl;
std::cout << "-------------------------------------------------------------------" << std::endl;
std::cout << oJson.ToFormattedString() << std::endl;

官方代码

完整案例下载地址:https://files-cdn.cnblogs.com/files/motao9527/CJsonObject.rar

C++ Json解析CJsonObject的详细使用的更多相关文章

  1. 超详细JSON解析步骤

    JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...

  2. android json解析详细介绍之gson

    废话不多说,什么json是轻量级数据交换标准:自己百度去深入了解:这里有三种json解析工具.本人只用过其中两种:    1.Google Json利器之Gson   评价:简单,方便. 2.阿里巴巴 ...

  3. android Json解析详解(详细代码)

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  4. Unity3d之json解析研究

    Unity3d之json解析研究     json是好东西啊!JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式      JSON简单易用,我要好好研究一下 ...

  5. IOS中Json解析的四种方法

    作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验 ...

  6. Android基础总结(12)——XML和JSON解析

    XML和JSON解析 在网络上传输数据时最常用的格式有两种:XML和JSON.本文主要就是学习如何对这两种常用的数据格式进行解析. 1.XML和JSON的定义 XML:扩展标记语言 (Extensib ...

  7. 项目开发笔记-传单下发 名片替换 文件复制上传/html静态内容替换/json解析/html解析

    //////////////////////////// 注意: 此博客是个人工作笔记 非独立demo////////////////////////////////// .............. ...

  8. 自己动手实现一个简单的JSON解析器

    1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...

  9. json解析,异步下载(listview仅滑动时加载)Demo总结

    异步加载的练习demo 主要涉及知识点: 1.解析json格式数据,主要包括图片,文本 2.使用AsynTask异步方式从网络下载图片 3.BaseAdapter的"优雅"使用 4 ...

随机推荐

  1. python的socket解析

    1.实现一对一的进行沟通交流 (1).服务端代码如下: import socket server = socket.socket() server.bind(("localhost" ...

  2. 小程序跳转 H5 时 cookie 值处理问题

    小程序使用 <web-view></web-view> 内嵌 H5,当跳转至 H5 后,校验用户的登录状态是最重要的. 在做手中的项目 b.xx.com 时,需要调用另一个域名 ...

  3. 将base64转为图片

    void Base64StringToImage(string imgCode) { try { String inputStr = imgCode; byte[] arr = Convert.Fro ...

  4. LeetCode刷题-004两个排序数组的中位数

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 示例 1:nums1 = [1, 3]num ...

  5. 剑指Offer-翻转单词顺序列

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"st ...

  6. Mysql_存储过程

    1.navicat新建存储过程 选择 过程 增加输入输出参数(若是无参,直接点击完成) 完成后代码如下: CREATE DEFINER = CURRENT_USER PROCEDURE `kxy_pr ...

  7. 机器学习基石12-Nonlinear Transformation

    注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了分类问题的三种线性模型,可以用来解决binary classif ...

  8. 【原创】大数据基础之Kudu(3)primary key

    关于kudu的primary key The primary key may not be changed after the table is created. You must drop and ...

  9. Mac 下GitHub 访问慢解决方案

    1.GitHub下载是指向了Amazon的服务器 下载地址是http://github-cloud.s3.amazonaws.com/   解决方案是更改host文件,使该域名指向香港的服务器 2.去 ...

  10. swoole 版本查看

    php --ri swoole php --ri swoole | grep Version  查看swoole版本 php -m | grep swoole  查看swoole拓展是否安装成功(ph ...