引用头文件:

#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. 【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度

    Description 人的一生不仅要靠自我奋斗,还要考虑到历史的行程. 历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势. 你发现在历史的不同时刻,不断的 ...

  2. Ubuntu 18.04 记录

    登录后死机,关机时死机的解决方法 更新内核并安装 Nvidia 显卡驱动可解决. 在内核更新为 4.15.18,Nvidia 显卡驱动为 390 时,问题解决. 使用 LiveCD 启动,然后 mou ...

  3. day 22 - 2 面向对象练习

    练习一 在终端输出如下信息 小明,10岁,男,上山去砍柴小明,10岁,男,开车去东北小明,10岁,男,最爱大保健老李,90岁,男,上山去砍柴老李,90岁,男,开车去东北老李,90岁,男,最爱大保健老张 ...

  4. vue 前端框架 (二) 表格增加搜索

    本章知识点 归纳: 1.定义全局过滤器 以及 私有过滤器 2.定义全局指令 以及 定义私有指令 3.定义键盘修饰符 4.v-for 的函数引入 5.字符串的incluede 方法,.toString( ...

  5. 记录一个使用HttpClient过程中的一个bug

    最近用HttpClient进行链接请求,开了多线程之后发现经常有线程hang住,查看线程dump java.lang.Thread.State: RUNNABLE at java.net.Socket ...

  6. JavaScript事件循环机制

    事件循环 事件循环不仅仅包含事件队列,而是具有至少两个队列,除了事件,还要保持浏览器执行的其他操作.这些操作被称为任务,并且分为两类:宏任务(或通常称为任务)和微任务. 单次循环迭代中,最多处理一个宏 ...

  7. core ML学习

    Core ML工具是一个Python包(coremltools),托管在Python包索引(PyPI)上. 从表格中可看出,支持caffe工具. 使用与模型的第三方工具相对应的Core ML转换器转换 ...

  8. 服务发现 consul cluster 的搭建【转】

    consul cluster setup 介绍和指南: consul用于服务发现.当底层服务发生变化时,能及时更新正确的mysql服务IP. 并提供给业务查询.但需要自行编写脚本,监测数据库状态和切断 ...

  9. 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能

    题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能 要求:MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十 ...

  10. .NET常用第三方库(包)总结(转)

    序列化与反序列化 JSON.NET应该是.NET平台上使用最为广泛的序列化/反序列化包了,ASP.NET和ASP.NET Core中默认序列化/反序列化包 Jil官网上说性能优于JSON.NET 文本 ...