KEIL中使用C语言根据key获取json的value

///key[]  给一个字符串,  key_kenth 要等于前边字符串的长度,   str 是整条字符串的数组,  str_lenth 是str从0的位置到str_lenth的位置,从这个范围里找key  , value[]给传入一个接收value值的数组,返回值是value的长度

u8 GetJson(u8 key[],u8 key_kenth,u8 str[],u8 str_lenth,u8 value[]){

u16 i;

u8 j;

u8 m;

u8 n;

u8 isPP=0;


for(i=0;i<(str_lenth-key_kenth-1);i++){

if(str[i]=='"'&&str[i+key_kenth+1]=='"'&&str[i+key_kenth+2]==':'&&str[i+key_kenth+3]=='"'){

isPP=1;

for(j=0;j<key_kenth;j++){

if(key[j]!=str[j+i+1]){

isPP=0;

}

}


if(isPP==1){

for(m=0;m<(str_lenth-key_kenth-1);m++){

if(str[i+key_kenth+4+m]=='"'){

//printf("匹配到JSON,位置在 %d -  %d \r\n",i+key_kenth+4,i+key_kenth+m+4);

for(n=0;n<m;n++){

value[n] = str[i+key_kenth+4+n];

}

return m;

}

}

}

}

}

return 0;

}


////测试JSON   测试时USART1_SendString的函数需要自己实现

//// u8 Arr[64];

//// u8 i;

//// USART1_SendString("\r\n",2);

//// USART1_SendString("\r\n password:",12);

//// i = GetJson("password",8,"{\"SSID\":\"mcuart_cn\",\"password\":\"123456666\",\"roomname\":\"C1808\"}",62,Arr);

//// USART1_SendString(Arr,i);

//// USART1_SendString("\r\n roomname:",12);

//// i = GetJson("roomname",8,"{\"SSID\":\"mcuart_cn\",\"password\":\"123456666\",\"roomname\":\"C1808\"}",62,Arr);

//// USART1_SendString(Arr,i);

//// USART1_SendString("\r\n SSID:",8);

//// i = GetJson("SSID",4,"{\"SSID\":\"mcuart_cn\",\"password\":\"123456666\",\"roomname\":\"C1808\"}",62,Arr);

//// USART1_SendString(Arr,i);

//// USART1_SendString("\r\n",2);


·关于我们·免责声明·服务条款·RSS订阅·dede168.com技术支持

Copyright © 1998-2015  All rights reserved.