-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.cc
66 lines (57 loc) · 2.02 KB
/
test.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
* @author: Laplace825
* @date: 2024-06-28T10:23:40
* @lastmod: 2024-07-19T20:26:41
* @description: a test file
* @filePath: /cpp-tiny-json/test.cc
* @lastEditor: Laplace825
* @ MIT lisence
*/
#include <tjson.hpp>
#include <tjson/tjfile.hpp>
#include <tjson/tjprint.hpp>
auto main() -> signed {
using namespace lap::tjson;
try {
TJsonFile tjf;
std::cout << "\033[1;32m>>> read the json file\033[0m\n";
tjf.readJsonFile("./test.json");
TJson tj;
std::cout
<< "\033[1;32m>>> set the json string to json object\033[0m\n";
tj.setJsonStr(tjf.getJsonStr());
tjf.dumpJsonObj2File(tj, "./testDump.json");
std::cout << "\033[1;32m>>> print the json object\033[0m\n";
TJprint(tj);
std::cout
<< "\033[1;32m>>> fn find the key's value in json object\033[0m\n";
tj.find("name").println();
std::cout
<< "\033[1;32m>>> op [] the key's value in json object\033[0m\n";
tj["list"][4].println();
tj["list"][5].println();
std::cout
<< "\033[1;32m>>> use iterator to visit the json object\033[0m\n";
for (auto iter = tj.cbegin(); iter != tj.cend(); ++iter) {
std::cout << iter->first << ": ";
iter->second.println();
}
std::cout << "\033[1;32m>>> change the json object\033[0m\n";
std::cout << "\033[1;32mmake student to a dict\n"
"make \"lop\" to \"hl\"\033[0m\n"
"make list[3] to \"chage] here\"\n";
tj["student"] = TJsonObj::DictType{
{"li", 10},
{"bai", 9 }
};
tj.find("lop") = "hl";
tj["list"][3] = "chage] here";
std::cout << tj << '\n';
tjf.dumpJsonObj2File(tj, "./testDumpChange.json");
std::cout
<< "\033[1;32mfind a can't find key in the json object\033[0m\n";
tj.find("this will throw error");
} catch (const std::exception& e) {
std::cerr << "error: " << e.what() << '\n';
}
}