引用头文件:
#include
#include
#include
#include
#include
#include
#include
#include
#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.修改如下图数据结构:
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.修改如下图数据结构:
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.修改如下图数据结构:
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" 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 }
官方案例:
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