怎样从JSON中获取数组键值 10

voidjson_value_free_ex(json_settings*settings,json_value*);json_value*json_object_obj... 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)); 应该怎么做呢?
展开
 我来答
heart阿飞55
2018-05-08 · TA获得超过1086个赞
知道大有可为答主
回答量:3030
采纳率:82%
帮助的人:556万
展开全部
给你说一个方法
1 先把json转化为数组
2 打印输出数组就可以(如果是要得到其中的某个元素,就在输出数组的时候加上
键名,一般来说没有规定键名的时候是0 ,1,2.....这些)
追问
朋友,能跟我说说怎么用上面的JSON API函数实现么,实现的原理能解释一下吗?谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式