引用頭文件:ios
#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;
1 __declspec(dllexport) void __stdcall read_JSon(char* path) 2 { 3 ifstream t(path); 4 string str((istreambuf_iterator<char>(t)),istreambuf_iterator<char>()); 5 string strValue; 6 Objson= CJsonObject(str); 7 cout << "-------------------------------------------------------------------" << std::endl;}
1 //保存JSON文件
2 __declspec(dllexport) void __stdcall write_string_to_file_append(char* file_string) 3 { 4 /*remove(file_string);*/
5 std::ofstream OsWrite(file_string, std::ofstream::trunc); 6 OsWrite << Objson.ToString(); 7 OsWrite << std::endl; 8 OsWrite.close(); 9 std::cout << "------------------執行完畢------------------------" << std::endl; 10 }
1.修改以下圖數據結構:git
1 __declspec(dllexport) void __stdcall FxmWindDirectBaseLine(int num, int count, char** pArr, int* sArr, int* iArr) 2 { 3
4 string iValue; 5 for (int i = 0; i < Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].GetArraySize(); i++) 6 { 7 Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].Delete(i); 8 i--; 9 } 10 cout << "---------------" << endl; 11 cout << Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].GetArraySize() << endl; 12 CJsonObject je; 13 for (int i = 0; i < count; i++) 14 { 15 iValue = pArr[i]; 16 je.Add("p", iValue); 17 je.Add("s", sArr[i]); 18 je.Add("i", iArr[i]); 19 std::cout << "pArr:" << je.ToString() << std::endl; 20 Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].Add(je); 21 je.Clear(); 22 } 23 cout <<"---------------" << endl; 24 for (int i = 0; i < Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"].GetArraySize(); i++) 25 { 26 cout << "mWindDirectBaseLine" << i << ":" << Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBaseLine"][i]("p") << endl; 27 } 28 cout << "---------------" << endl; 29 }
2.修改以下圖數據結構:github
1 __declspec(dllexport) void __stdcall UpmWindDirectBars(int num,int count, char** fpArr,int* fsArr, int* fiArr, char** hpArr, int* hsArr, int* hiArr) 2 { 3 string iValue; 4 for (int i = 0; i < Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBars"].GetArraySize(); i++) 5 { 6 Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBars"].Delete(i); 7 i--; 8 } 9 cout << "---------------" << endl; 10 CJsonObject je; 11 for (int i = 0; i < count; i++) 12 { 13 iValue = fpArr[i]; 14 je.AddEmptySubObject("f"); 15 je["f"].Add("p", iValue); 16 je["f"].Add("s", fsArr[i]); 17 je["f"].Add("i", fiArr[i]); 18 iValue = hpArr[i]; 19 je.AddEmptySubObject("h"); 20 je["h"].Add("p", iValue); 21 je["h"].Add("s", hsArr[i]); 22 je["h"].Add("i", hiArr[i]); 23 std::cout << "pArr:" << je.ToString() << std::endl; 24 Objson["WindDirectLine"]["coordinates"][num]["mWindDirectBars"].Add(je); 25 je.Clear(); 26 } 27 cout << "---------------" << endl; 28 }
3.修改以下圖數據結構:json
1 __declspec(dllexport) void UpHuxianArrays( int count, double* fpArr, double* fsArr, double* fiArr) 2 { 3 std::cout << "-------------------------------------------------------------------" << std::endl; 4
5
6 for (int i = 0; i <Objson["resultWindSpeedGrid"]["HuxianArrays"].GetArraySize(); i++) 7 { 8 Objson["resultWindSpeedGrid"]["HuxianArrays"].Delete(i); 9 i--; 10 } 11 cout << "Count:" << Objson["resultWindSpeedGrid"]["HuxianArrays"].GetArraySize() << endl; 12 cout << "---------------" << endl; 13 CJsonObject je; 14 for (int i = 0; i < count; i++) 15 { 16 je.AddEmptySubArray("Params"); 17 je["Params"].Add(fpArr[i]); 18 je["Params"].Add(fsArr[i]); 19 je["Params"].Add(fiArr[i]); 20 std::cout << "pArr:" << je.ToString() << std::endl; 21 Objson["resultWindSpeedGrid"]["HuxianArrays"].Add(je); 22 je.Clear(); 23 } 24 Objson["resultWindSpeedGrid"].Replace("HuxianShu", Objson["resultWindSpeedGrid"]["HuxianArrays"].GetArraySize()); 25 cout << "---------------" << endl; 26 }
官方案例:bootstrap
1 int iValue; 2 std::string strValue; 3 neb::CJsonObject oJson("{\"refresh_interval\":60,"
4 "\"dynamic_loading\":["
5 "{"
6 "\"so_path\":\"plugins/User.so\", \"load\":false, \"version\":1,"
7 "\"cmd\":["
8 "{\"cmd\":2001, \"class\":\"neb::CmdUserLogin\"},"
9 "{\"cmd\":2003, \"class\":\"neb::CmdUserLogout\"}"
10 "],"
11 "\"module\":["
12 "{\"path\":\"im/user/login\", \"class\":\"neb::ModuleLogin\"},"
13 "{\"path\":\"im/user/logout\", \"class\":\"neb::ModuleLogout\"}"
14 "]"
15 "},"
16 "{"
17 "\"so_path\":\"plugins/ChatMsg.so\", \"load\":false, \"version\":1,"
18 "\"cmd\":["
19 "{\"cmd\":2001, \"class\":\"neb::CmdChat\"}"
20 "],"
21 "\"module\":[]"
22 "}"
23 "]"
24 "}"); 25 std::cout << oJson.ToString() << std::endl; 26 std::cout << "-------------------------------------------------------------------" << std::endl; 27 std::cout << oJson["dynamic_loading"][0]["cmd"][1]("class") << std::endl; 28 oJson["dynamic_loading"][0]["cmd"][0].Get("cmd", iValue); 29 std::cout << "iValue = " << iValue << std::endl; 30 oJson["dynamic_loading"][0]["module"][0].Get("path", strValue); 31 std::cout << "strValue = " << strValue << std::endl; 32 std::cout << "-------------------------------------------------------------------" << std::endl; 33 oJson.AddEmptySubObject("depend"); 34 oJson["depend"].Add("nebula", "https://github.com/Bwar/Nebula"); 35 oJson["depend"].AddEmptySubArray("bootstrap"); 36 oJson["depend"]["bootstrap"].Add("BEACON"); 37 oJson["depend"]["bootstrap"].Add("LOGIC"); 38 oJson["depend"]["bootstrap"].Add("LOGGER"); 39 oJson["depend"]["bootstrap"].Add("INTERFACE"); 40 oJson["depend"]["bootstrap"].Add("ACCESS"); 41 oJson["depend"].AddEmptySubArray("boot"); 42 CJsonObject ject; 43 string iValues; 44 for (int i = 0; i < count; i++) 45 { 46 iValues = pArr[i]; 47 ject.Add("p", iValues); 48 ject.Add("s", 0); 49 ject.Add("i", -1); 50 std::cout << "pArr:" << ject.ToString() << std::endl; 51 oJson["depend"]["boot"].Add(ject); 52 ject.Clear(); 53 } 54 std::cout << oJson.ToString() << std::endl; 55 std::cout << "-------------------------------------------------------------------" << std::endl; 56 std::cout << oJson.ToFormattedString() << std::endl;
完整案例下載地址:https://files-cdn.cnblogs.com/files/motao9527/CJsonObject.rar數據結構