栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

ESP8266-----JSON----c函数库提供字符串函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ESP8266-----JSON----c函数库提供字符串函数

前言

8266如何创建以及解析字符串

首先根据我们要创建的json树

/* 【JSON_Tree】
//**************************************************************************
	{
    	"Shanghai":
    	{
        	"temp": "30℃",
        	"humid": "30%RH"
    	},

    	"Shenzhen":
    	{
        	"temp": "35℃",
        	"humid": 50
		},

    	"result": "Shenzhen is too hot!"
	}

设置json树格式字符串将之后所要赋值的键所对应的值用格式字符来替代,之后将他们一 一赋值

提示:c语言中双引号引起来表示字符串,如果字符串中想显示双引号这个字符,那么前面需要加上转义字符标志-----也就是斜杠,

#define		JSON_Tree_Format	" { n "								
    								" "Shanghai": n "				
									" { n "							
        								" "temp": "%s", n "		
										" "humid": "%s" n "		
    								" }, n "							
																		
									" "Shenzhen": n "				
									" { n "							
    									" "temp": "%s", n "		
										" "humid": %s n "			
    								" }, n "							
																		
									" "result": "%s" n "			
								" } n "
首先创建JSON树
// 创建JSON树
//===================================================================================================
void ICACHE_FLASH_ATTR Setup_JSON_Tree_JX(void)
{

	// 赋值JSON树【赋值JSON_Tree_Format字符串中的格式字符】
	//--------------------------------------------------------------------------------------------
	os_sprintf(A_JSON_Tree, JSON_Tree_Format, "30℃","30%RH","35℃","50","Shenzhen is too hot!");

	os_printf("rn-------------------- 创建JSON树 -------------------rn");

	os_printf("%s",A_JSON_Tree);	// 串口打印JSON树

	os_printf("rn-------------------- 创建JSON树 -------------------rn");
}

调用c函数库中的函数os_sprintf(A_JSON_Tree, JSON_Tree_Format, "30℃","30%RH","35℃","50","Shenzhen is too hot!");来格式化字符串,将json树格式字符串当中的值一 一赋值

json创建完毕之后,串口打印json树

解析JSON树 

接下来用c函数库当中得其他字符串函数来解析json树中的键和值

// 解析JSON树
//===================================================================================================
int ICACHE_FLASH_ATTR Parse_JSON_Tree_JX(void)
{
	os_printf("rn-------------------- 解析JSON树 -------------------rn");

	char A_JSONTree_Value[64] = {0};	// JSON数据缓存数组

	char * T_Pointer_Head = NULL;		// 临时指针
	char * T_Pointer_end = NULL;		// 临时指针

	u8 T_Value_Len = 0;					// 【"值"】的长度


	// 【"Shanghai"】
	//………………………………………………………………………………………………………………
	T_Pointer_Head = os_strstr(A_JSON_Tree, ""Shanghai"");		// 【"Shanghai"】
	os_printf("Shanghai:n");

//	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】
//	T_Pointer_Head = os_strstr(T_Pointer_Head, "{");				// 【{】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ""temp"");			// 【"temp"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】
	T_Pointer_Head = os_strstr(T_Pointer_Head, """) + 1;			// 【值的首指针】
	T_Pointer_end = os_strstr(T_Pointer_Head, """);				// 【"值"尾的"】
	T_Value_Len = T_Pointer_end - T_Pointer_Head;					// 计算【值】的长度
	os_memcpy(A_JSONTree_Value, T_Pointer_Head, T_Value_Len);		// 获取【值】
	A_JSONTree_Value[T_Value_Len] = '';							// 【值后添''】
	os_printf("t temp:%sn",A_JSONTree_Value);


//	T_Pointer_Head = os_strstr(T_Pointer_Head, ",");				// 【,】
//	T_Pointer_Head = os_strstr(T_Pointer_Head, """);				// 【"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ""humid"");		// 【"humid"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】
	T_Pointer_Head = os_strstr(T_Pointer_Head, """) + 1;			// 【值的首指针】
	T_Pointer_end = os_strstr(T_Pointer_Head, """);				// 【"值"尾的"】
	T_Value_Len = T_Pointer_end - T_Pointer_Head;					// 计算【值】的长度
	os_memcpy(A_JSONTree_Value, T_Pointer_Head, T_Value_Len);		// 获取【值】
	A_JSONTree_Value[T_Value_Len] = '';							// 【值后添''】
	os_printf("t humid:%sn",A_JSONTree_Value);

	//	T_Pointer_Head = os_strstr(T_Pointer_Head, "}");			// 【}】
	//	T_Pointer_Head = os_strstr(T_Pointer_Head, ",");			// 【,】
	//………………………………………………………………………………………………………………


	// 【"Shenzhen"】
	//………………………………………………………………………………………………………………
	T_Pointer_Head = os_strstr(T_Pointer_Head, ""Shenzhen"");		// 【"Shenzhen"】
	os_printf("Shenzhen:n");

//	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】
//	T_Pointer_Head = os_strstr(T_Pointer_Head, "{");				// 【{】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ""temp"");			// 【"temp"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】
	T_Pointer_Head = os_strstr(T_Pointer_Head, """) + 1;			// 【值的首指针】
	T_Pointer_end = os_strstr(T_Pointer_Head, """);				// 【"值"尾的"】
	T_Value_Len = T_Pointer_end - T_Pointer_Head;					// 计算【值】的长度
	os_memcpy(A_JSONTree_Value, T_Pointer_Head, T_Value_Len);		// 获取【值】
	A_JSONTree_Value[T_Value_Len] = '';							// 【值后添''】
	os_printf("t temp:%sn",A_JSONTree_Value);


	//【注:"humid"键所对应的值是数字。数字同样是由ASSIC码表示,但是没有""】
	//……………………………………………………………………………………………………
//	T_Pointer_Head = os_strstr(T_Pointer_Head, ",");				// 【,】
//	T_Pointer_Head = os_strstr(T_Pointer_Head, """);				// 【"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ""humid"");		// 【"humid"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】

	// 获取数字的首指针【数字为十进制形式,并且没有""】
	//-----------------------------------------------------
	while(*T_Pointer_Head < '0' || *T_Pointer_Head > '9')	// 排除不在【0~9】范围内的字符
		T_Pointer_Head ++ ;

	T_Pointer_end = T_Pointer_Head;	// 设置数字尾指针初值

	// 获取数字的尾指针+1【数字为十进制形式,并且没有""】
	//-----------------------------------------------------
	while(*T_Pointer_end >= '0' && *T_Pointer_end <= '9')	// 计算在【0~9】范围内的字符
		T_Pointer_end ++ ;

	T_Value_Len = T_Pointer_end - T_Pointer_Head;					// 计算【值(数字)】的长度
	os_memcpy(A_JSONTree_Value, T_Pointer_Head, T_Value_Len);		// 获取【值(数字)】
	A_JSONTree_Value[T_Value_Len] = '';							// 【值后添''】
	os_printf("t humid:%sn",A_JSONTree_Value);

//	T_Pointer_Head = os_strstr(T_Pointer_Head, "}");				// 【}】
//	T_Pointer_Head = os_strstr(T_Pointer_Head, ",");				// 【,】
	//………………………………………………………………………………………………………………

	// 【"result"】
	//………………………………………………………………………………………………………………
	T_Pointer_Head = os_strstr(T_Pointer_Head, ""result"");		// 【"result"】
	T_Pointer_Head = os_strstr(T_Pointer_Head, ":");				// 【:】
	T_Pointer_Head = os_strstr(T_Pointer_Head, """) + 1;			// 【值的首指针】
	T_Pointer_end = os_strstr(T_Pointer_Head, """);				// 【"值"尾的"】
	T_Value_Len = T_Pointer_end - T_Pointer_Head;					// 计算【值】的长度
	os_memcpy(A_JSONTree_Value, T_Pointer_Head, T_Value_Len);		// 获取【值】
	A_JSONTree_Value[T_Value_Len] = '';							// 【值后添''】
	os_printf("result:%sn",A_JSONTree_Value);

	T_Pointer_Head = os_strstr(T_Pointer_Head, "}");			// 【}】
	//………………………………………………………………………………………………………………

    os_printf("rn-------------------- 解析JSON树 -------------------rn");

    return 0 ;
}

说明8266成功使用c函数库当中的字符串函数,进行了创建json树以及解析json树 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号