0%

json,csv解析

jsoncsv初体验

json

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
void test_json()
{
//读取
std::ifstream file("test2.json");
if (!file.good())
{
std::cout << "无法打开" << std::endl;
return;
}
std::stringstream str_stream;
//rdbuf返回一个指向文件缓冲区的指针,将文件的内容读取到字符串流中,以便后续对字符串流进行处理或解析
str_stream << file.rdbuf();
file.close();

//输出
//把字符串按json语法格式解析
cJSON* json_root = cJSON_Parse(str_stream.str().c_str());

cJSON* json_name = cJSON_GetObjectItem(json_root, "name");
cJSON* json_age = cJSON_GetObjectItem(json_root, "age");
cJSON* json_pets = cJSON_GetObjectItem(json_root, "pets");

std::cout << json_name->string << ":" << json_name->valuestring << std::endl;
std::cout << json_age->string << ":" << json_age->valueint << std::endl;
std::cout << json_pets->string << ":" << std::endl;

//输出数组
cJSON* json_item = nullptr;//定义一个指针
cJSON_ArrayForEach(json_item, json_pets)//for循环
{
std::cout << "\t" << json_item->valuestring << std::endl;
}
}

csv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void test_csv()
{
std::ifstream file("test.csv");
if (!file.good())
{
std::cout << "无法打开" << std::endl;
return;
}

std::string str_line;
while (std::getline(file, str_line))
{
std::string str_grid; //单个字符
std::stringstream str_stream(str_line); //每一行字符
//读取数据时遇到逗号时会停止,并将分隔符之前的数据存储到str_grid中
while (std::getline(str_stream, str_grid, ','))
{
std::cout << str_grid << " ";
}
std::cout << std::endl;
}
file.close();
}