1、支持按照表名、记录号、JSONPATH从原始数据中提取指定字段的值
2、支持按照表名从原始数据中获取有多少条记录
3、支持按照表名、记录号和JSONPATH从原始数据中获取指定内层json_array的记录数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <jansson.h>
union type
{
long INT;
int BOOL;
double DOUBLE;
char STRING[100];
json_t* VALUE;
};
struct json_value
{
char json_type[30];//存放json的类型
union type var;//存放json的value
};
struct my_json
{
int num_bottom;//存放指定内层的记录数
json_t* value; //存放定位到的json
};
struct json_count
{
json_t *root;//用于存放从gmdata文件加载的json数据
int count;//用于存放表名最外层的记录数
};
void get_value_by_json(json_t* root,struct json_value* json)//获取json的类型和数据
{
if(root==NULL)
return;
memset((*json).json_type,0,sizeof((*json).json_type));
memset((*json).var.STRING,0,sizeof((*json).var.STRING));
switch(json_typeof(root))
{
case JSON_OBJECT :
{
strncpy((*json).json_type,"JSON_OBJECT",sizeof((*json).json_type));
(*json).var.VALUE=root;
}
break;
case JSON_ARRAY :
{
strncpy((*json).json_type,"JSON_ARRAY",sizeof((*json).json_type));
(*json).var.VALUE=root;
}
break;
case JSON_STRING :
{
strncpy((*json).json_type,"JSON_STRING",sizeof((*json).json_type));
strncpy((*json).var.STRING,json_string_value(root),sizeof((*json).var.STRING));
}
break;
case JSON_INTEGER:
{
strncpy((*json).json_type,"JSON_INTEGER",sizeof((*json).json_type));
(*json).var.INT=json_integer_value(root);
}
break;
case JSON_REAL :
{
strncpy((*json).json_type,"JSON_REAL",sizeof((*json).json_type));
(*json).var.DOUBLE=json_real_value(root);
}
break;
case JSON_TRUE :
{
s
jansson数据提取
最新推荐文章于 2021-08-28 18:11:36 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)