怎样从JSON中获取数组键值

qq_20225875 2018-05-07 11:57:59
void json_value_free_ex(json_settings * settings, json_value *);

json_value *json_object_object_get_e(json_value * p, char *name);
char *json_object_to_json_string_e(json_value * p);
unsigned int json_object_to_json_string_length(json_value * p);
int json_object_get_int_e(json_value * p);

int json_array_get_length(json_value * p);
json_value *json_array_get_object(json_value * p, size_t pos);
char *alloc_str_from_json(const char *json_str, json_value * p);
上面是JSON API


err_t device_data_parse(json_value *jptr, char *name, int *value)
{


json_value *jstr;
json_value *jstr_value;
char *value_str = NULL;
jstr = json_object_object_get_e(jptr, name);

if (NULL != jstr) {
jstr_value = json_object_object_get_e(jstr, "value");
value_str = json_object_to_json_string_e(jstr_value);
*value = atoi(value_str) & 0xffff;
return OK;
} else {
return ERR;
}

}
void down_CMD_deal(void)
{
char *down_cmd {"attrSet":["HeatMode"],"uuid":"7E9779F12767F537F7","HeatMode":{"value":"3"}}
json_value *jptr = json_parse(down_cmd, strlen(down_cmd));

device_data_parse(jptr, "HeatMode", &(virtual_device.HeatMode));//取出heatmode后virtual_device.HeatMode=3
}
我想在"attrSet":["HeatMode"]时才执行device_data_parse(jptr, "HeatMode", &(virtual_device.HeatMode)); 应该怎么做呢?
...全文
588 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧