IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 60 无键值Json数组和有键值json数组实验 -> 正文阅读

[大数据]60 无键值Json数组和有键值json数组实验

1.引言

? ? ? ? 特殊的无key值的json数组今天遇到了,所以研究了会才知道怎么生成和解析这种无键值的json数组。下面我们来看看今天的实验。

2.json生成数组实验

????????今天的实验就是生成这样的无key值的json数组,在这里称为数组1。

{
    "scanPrefix": [
        "hello",
        "hello", 
        "hello",
        "hello",
        "hello"
    ]
}

????????我们再来看看正常一点的有key值的json数组,在这里称为数组2。

{
    "scanPrefix":[
        {"H":"hello"}, 
        {"H":"hello"}, 
        {"H":"hello"}, 
        {"H":"hello"}, 
        {"H":"hello"}
    ]
}

????????上述json数组区别在于有无键值,即有无key值json数组。

来看看数组1的生成方式:

uint16_t  protocol_Respond_Array0(uint8_t *pRcvBufferOut, uint16_t nlen)
{
	uint16_t ni = 0;
	uint16_t nsize			= 0;
	char *data_str			= NULL;
	char *response_str		= NULL;
	cJSON *response_root		= NULL;

	//生成Json数据格式
	response_root = cJSON_CreateObject();
	
	cJSON *scanPrefixArray = cJSON_CreateArray();
	cJSON_AddItemToObject(response_root, "scanPrefix", scanPrefixArray);
	
	for(ni = 0; ni <5 ; ni++)
	{
		if(ni%2==0)
			cJSON_AddStringToObject(scanPrefixArray, "NULL","hello");
		else
			cJSON_AddStringToObject(scanPrefixArray, "NULL","hi");
	}
	
	response_str = cJSON_Print(response_root);
	
	nsize = strlen(response_str);

	if(pRcvBufferOut != NULL)
	{
		memcpy(pRcvBufferOut, response_str, nsize);
	}	

	if(NULL !=response_root) cJSON_Delete(response_root);
	if(NULL !=response_str) free(response_str);
	
	return nsize;
}

来看看数组2的生成方式:

uint16_t  protocol_Respond_Array0(uint8_t *pRcvBufferOut, uint16_t nlen)
{
	uint16_t ni = 0;
	uint16_t nsize			= 0;
	char *data_str			= NULL;
	char *response_str		= NULL;
	cJSON *response_root		= NULL;

	//生成Json数据格式
	response_root = cJSON_CreateObject();
	
	cJSON *scanPrefixArray = cJSON_CreateArray();
	cJSON_AddItemToObject(response_root, "scanPrefix", scanPrefixArray);
	
	for(ni = 0; ni <5 ; ni++)
	{
        cJSON*obj=cJSON_CreateObject();
		cJSON_AddItemToArray(scanPrefixArray,obj);
		if(ni%2==0)
			cJSON_AddStringToObject(obj, "H","hello");
		else
			cJSON_AddStringToObject(obj, "H","hi");
	}
	
	response_str = cJSON_Print(response_root);
	
	nsize = strlen(response_str);

	if(pRcvBufferOut != NULL)
	{
		memcpy(pRcvBufferOut, response_str, nsize);
	}	

	if(NULL !=response_root) cJSON_Delete(response_root);
	if(NULL !=response_str) free(response_str);
	
	return nsize;
}

3.解析json数组实验?

? ? ? ? 解析无key值json数组1。

uint16_t  protocol_parse_Array0(uint8_t *pRcvBufferOut, uint16_t nlen)
{
	cJSON *item 		= NULL;
	cJSON *pRcvJson 	= NULL;
	cJSON *pRcvJsonSec 	= NULL;

	pRcvJson = cJSON_Parse((char *)pRcvBufferOut);
	if(pRcvJson == NULL)
	{
		printf("cJSON_Parse failed\r\n");
		return 0;
	}

	/*分解json类型信息*/
	pRcvJsonSec=cJSON_GetObjectItem(pRcvJson,"scanPrefix");
	if(pRcvJsonSec ==NULL)
	{
		printf("cJSON_Parse method failed\r\n");
		return 0;
	}
	
	int arraysize = cJSON_GetArraySize(pRcvJsonSec);

	for(int i=0;i<arraysize;i++)
	{
		item=cJSON_GetArrayItem(pRcvJsonSec,i);
		if(item != NULL)
		{
			printf("======>%s\r\n",item->valuestring);
		}
	}

	if(NULL !=pRcvJson) cJSON_Delete(pRcvJson);
	
	return 0;
}

?????解析有key值json数组2。

uint16_t  protocol_parse_Array(uint8_t *pRcvBufferOut, uint16_t nlen)
{
	cJSON *item 		= NULL;
	cJSON *pRcvJson 	= NULL;
	cJSON *pRcvJsonSec 	= NULL;

	pRcvJson = cJSON_Parse((char *)pRcvBufferOut);
	if(pRcvJson == NULL)
	{
		printf("cJSON_Parse failed\r\n");
		return 0;
	}

	/*分解json类型信息*/
	pRcvJsonSec=cJSON_GetObjectItem(pRcvJson,"scanPrefix");
	if(pRcvJsonSec ==NULL)
	{
		printf("cJSON_Parse method failed\r\n");
		return 0;
	}
	
	int arraysize = cJSON_GetArraySize(pRcvJsonSec);

	for(int i=0;i<arraysize;i++)
	{
		item=cJSON_GetArrayItem(pRcvJsonSec,i);
		if(item != NULL)
		{
			cJSON *itemread=cJSON_GetObjectItem(item,"H");
			printf("H:%s\n",itemread->valuestring);
		}
	}

	if(NULL !=pRcvJson) cJSON_Delete(pRcvJson);
	
	return 0;
}

?今天实验到此结束!over!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:30:42  更:2021-12-04 13:32:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:53:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码