cplus cjson 封装
cJSON
Ultralightweight JSON parser in ANSI C
项目地址:https://gitcode.com/gh_mirrors/cj/cJSON
免费下载资源
·
内核开发中,大多是面向对象的思想
本来想仿照内核,抽象出一个驱动加载初始化,用C++ 实现,后来发现,底层逻辑还是有点乱, 读写二级制部分,设备树部分,使用json 文本替代, 分析节点描述使用,但是这个封装,还勉强可用,传参,分析都已解决.platform gpio char dev 这个的逻辑关系还得在顺一下
#include "cJSON.h"
#include "cJSON_Utils.h"
#include <iostream>
#include <string>
#include <fstream>
#include <fcntl.h>
#include <sys/stat.h>
#include <typeinfo>
class file_attr{
public:
const char* name;
file_attr(const char*n):name(n){}
int32_t size(){
struct stat fs;
stat(name,&fs);
return fs.st_size;
}
};
class json: private file_attr{
public:
json(const char* n);
void print();
void find(const char* node,std::string& value);
void find(const char* node,int& value);
void find(const char* node,const char* subnode,std::string& value);
void find(const char* node,const char* subnode,int& value);
~json();
private:
cJSON* root;
FILE* fp;
char* buffer;
};
json::json(const char* n): file_attr(n){
fp = fopen(name,"r");
buffer = new char(this->size());
fread(buffer,this->size(),1,fp);
root = cJSON_Parse(buffer);
}
json::~json() {
delete[] buffer;
buffer = nullptr;
cJSON_free(root);
fclose(fp);
}
void json::print() {
std::cout << buffer << std::endl;
}
void json::find(const char *node, std::string & value) {
cJSON* ptr = cJSON_GetObjectItem(root,node);
if(ptr != nullptr){
value = std::string(ptr->valuestring);
}
}
void json::find(const char *node, int & value) {
cJSON* ptr = cJSON_GetObjectItem(root,node);
if(ptr != nullptr){
value = ptr->valueint;
}
}
void json::find(const char *node, const char *subnode, std::string &value) {
cJSON* ptr = cJSON_GetObjectItem(root,node);
if(ptr != nullptr) {
cJSON *sub_ptr = cJSON_GetObjectItem(ptr, subnode);
if(sub_ptr != nullptr)
value = std::string(sub_ptr->valuestring);
}
}
void json::find(const char *node, const char *subnode, int &value) {
cJSON* ptr = cJSON_GetObjectItem(root,node);
if(ptr != nullptr) {
cJSON *sub_ptr = cJSON_GetObjectItem(ptr, subnode);
if(sub_ptr != nullptr)
value = sub_ptr->valueint;
}
}
GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:3 个月前 )
424ce4ce
This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6.
Related to #860
5 个月前
32497300 - 6 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)