60 无键值Json数组和有键值json数组实验

SpringMVC之JSON工具:Jackson Gson 和fastjson通过JSON工具来解决文字乱码和时间格式问题——通过JSON工具生成JSON SpringMVC + Jackson结合生成JSON数据,SpringMVC + Gson结合生成JSON数据,SpringMVC + Fastjson结合生成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!

向json中添加无key值数组的方法.txt 立即下载

相关推荐

Python自动化办公:5分钟搞定钉钉群文件自动发送(附完整代码)

本文详细介绍了如何利用Python实现钉钉群文件的自动化发送。通过结合钉钉企业内部应用与群机器人API,构建了包含智能令牌管理、文件上传与消息发送的完整工作流。文章提供了可直接复用的完整代码,并分享了定时任务、目录监听等进阶实战方案,帮助职场人士高效解决重复性文件发送难题,实现办公自动化。

7z8x2c4v6b9的博客 325

没有key的json怎么取value

如下一段json: [{ "id":"01", "text":"一" }, { "id":"02", "text":"二" }] 解析用的是:JObjectjsonF=(JObject)JsonConvert.DeserializeObject(jsonS) 这句代码,然后取value怎么取? 【如果在[前面加上{"result":,最后加上}我就会用jsonF["result"][...

netyou的专栏 3201

西门子精致面板TP1200 历史数据(历史数据、审计追踪) 移存到网络路径

TP1200 审计追踪

zhang080602的博客 5770

无key值的json数组解析

当字符串str为以下json对象时,想要获取key为city中的第一个数据beijing的时候, { "type": 1, "city": [ "beijing","shanghai","guangzhou"] } 首先需要通过getJSONArray方法获取到json数组city,然后再用getString(0)即可获取到第一个参数beijing,同理,获取shanghai...

jiaonizuoren的博客 4454

告别有线:用PVE直通无线网卡,打造一台真正的‘无线’Win10软路由/测试机

本文详细介绍了如何通过PVE直通无线网卡技术,构建全无线Win10软路由或测试机。从硬件选型、PVE环境配置到PCIe和USB双模直通技术,逐步指导实现Wi-Fi AP和蓝牙连接功能,为家庭实验室和小型办公环境提供灵活高效的网络解决方案。

weixin_28683689的博客 587

Stata实战:DID平行趋势检验完整操作指南(附reghdfe+coefplot代码)

本文提供了一份使用Stata进行DID平行趋势检验的完整实战指南。文章详细讲解了从数据准备、生成相对时间变量,到利用reghdfe命令构建动态效应模型,以及使用coefplot命令进行结果可视化的全流程操作。核心在于通过检验政策前交互项的显著性,验证处理组与对照组是否满足平行趋势假设,为后续因果推断奠定可靠基础。

weixin_29231725的博客 1380

对于没有key的json或[“1“,“2“]数据的遍历

对于多选字段前端构建参数是["1","2","3"] ,直接存在数据库中。前端把它叫json,但是严格来说更像toString后的list。由于我需要遍历一下,从数据库拿出来是String的,需要转化一下它的格式。Hutool下的包,阿里下也有这个方法,但不能直接传需要遍历的字段。第二种方法其实没必要,就是直接用String的replace方法,替换掉中括号后按照","分割,形成数组,再遍历数组,就不多写了。直接遍历即可,注意这个方法,它是。

m0_70669458的博客 369

vsomeip3 双机通信文件配置

验证环境 vsomeip地址Android运行命令,红色的地方需要和配置文件一样Linux运行命令,红色的地方需要和配置文件一样Linux service配置文件 ,红色的地方需要更改Android client配置文件,红色的地方需要更改,蓝色的地方可不要 ...

m0_37132481的博客 5222

实习收获之 获取json对象键值的几种方法

获取json对象中指定的键值或者排除不需要的键值,只提取我们所需要的键值 在实习过程中有遇到一些问题,就是后端返回的json对象中,键特别多,但我们所需要的只是其中一部分;有时候是我们需要其中很大一部分,而有一些是我们所不需要的,那么这个时候我们仅需要下面的操作就可以提取到我们想要的键值: 如有obj这样一个json对象,我们仅需要里面first和sixth的键值 var obj = { first: 1, second: 2, third: 3,

随缘手札 7205

Agent Skills应用解析:构建可扩展、高效率AI探员

Agent Skills是一个简洁而强大的概念:它是一个包含组织化的指令、脚本和资源的文件夹,智能体可以动态地发现并加载这些内容,以在特定任务中表现更佳。可组合性(Composability):一个Agent Skill是一个独立的、封装良好的能力单元。开发者可以为不同的功能(例如PDF处理、网络浏览、数据分析)创建独立的技能,然后根据需要将它们组合起来,赋能不同的智能体。这意味着不再需要为每个用例构建碎片化、定制设计的智能体,而是可以通过组合现有技能来快速构建新的专业智能体。

形上得其象,形下合于数;阴阳自济,玄理自明。 1627

【变化检测】变化检测相关数据集+代码+论文合集

光学影像变化检测领域数据集(有label的,无label的)、高光谱影像变化检测领域数据集、3D变化检测领域数据集、传统变化检测算法、深度学习变化检测算法、SAR变化检测算法、高光谱变化检测算法论文及代码等资源。

向上生长的程序媛的博客 2089

jquery 获取某个值得键名_js:数组里面获取键名和键值

在写php时用ajax异步传回的返回数组时是json格式,在js里面处理时有时需要用到键名,此时可以用in来处理js只有数字索引:var data = new array("你","我","他");var length = data.length();var i = 0;for(i;ialert(data[i]);}ajax异步返回的json数据有键名和键值:$names = array('you...

weixin_39918928的博客 1849

AI人工智能领域持续学习:提升技术能力的关键

在当今科技飞速发展的时代,AI人工智能已经渗透到我们生活的方方面面。本文章的目的就是帮助大家了解在AI人工智能领域持续学习的重要性,以及如何通过持续学习来提升自己的技术能力。文章会涵盖AI的核心概念、持续学习的原理和方法、实际应用场景等方面,让大家对AI领域的持续学习有一个全面的认识。本文首先会介绍AI人工智能的核心概念,让大家对这个领域有一个初步的了解。然后详细讲解持续学习的原理和方法,通过代码示例展示如何在实际项目中实现持续学习。接着会分析AI持续学习在不同场景的应用,推荐一些学习工具和资源。

AI 原生应用开发的博客 1289

JSON转数组后,筛选分组并输出,判断键值键值是否存在补0

var arr = [ {“category_name”: “60米”, “member_name”: “张三”, “value”: “90”}, {“category_name”: “60米”, “member_name”: “李四”, “value”: “80”}, {“category_name”: “3000米”, “member_name”: “张三”, “value”: “46”}, ...

挖掘大数据价值,让决策者快速洞悉趋势,让大众读懂数据背后的故事。 732

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

json的格式和简单例子

文章目录jsonObject格式例子jsonArray格式例子数组中的值也可以另一个数组,或者甚至另一个 JSON 对象 jsonObject 格式 (key/value)键值对形式存在的无序的jsonObject对象。 用{表示开始,用}表示结束。每个“key”后跟一个: 多组键值对之间使用逗号分隔。 key值必须要是string类型,而对于value,则可以是string、number、object、array等数据类型。 例子 { "error": 0, "status": "suc

z2431435的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Json和Js之间转化及应用(实际开发常用)

起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大。通过for(let i in obj){}来获取,其中i为json对象obj的。Json中只要涉及到字符串就必须使用双引号,不支持undefined。数字number 字符串string 布尔boolean。,获取该键对应的值,可以通过obj[i].xxx获取。=>for in(常用!eval()函数详解。

m0_65912225的博客 3725

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【花雕学编程】Arduino JSON 之解析包含对象的嵌套数组

Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来编写、编译和上传代码到Arduino板上。Arduino还有一个丰富的库和社区,你可以利用它们来扩展Arduino的功能和学习Arduino的知识。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。2、易用:Arduino的硬件和软件都是为初学者和非专业人士设计的,你可以轻松地上手和使用它们。

雕爷学编程 952

JSON是什么,有什么用,怎么写json

JSON是什么,有什么用,怎么写JSONJSON是什么JSON有什么用怎么写JSONJavaScript中使用JSON JSON是什么 JSON 全称JavaScript Object Notation(JavaScript对象符号) JSON本身是一种数据格式。是一串有固定格式的字符串,我们将所有符合这个数据格式要求的字符串都称之为JSON。它是一种轻量级的数据交换格式,方便我们读写 JSON有什么用 JSON设计的初衷是用完全独立于编程语言的文本格式来存储和表示数据。这种数据格式可以用在前后端交互中,方

qq_44017357的博客 1554

数组对象转json格式

1、数组转化成JSON对象后,key值是索引,value是数组对应的值。 //数组也可以转化成JSON对象 var jStr3 = "[[10,20,30],40,50,60]"; var j3 = JSON.parse(jStr3); for(let key in j3){ console.log('key:',key); } // key...

qq_42958772的博客 1万+

json的两种格式以及python中json的序列化的两种方式

1、键值对形式 { "label": "edb1.yuchai.com(10.10.182.11)", "open": true, "inode": true, "checkbox": false, "id": "5714bc22b4b24604a45452fd2cca38b0", "branch": [{ "label": "/dev/dm-7(Linux device-mapp...

Neo 1万+

json转换为键值对辅助类

1 /// <summary> 2 /// json转换为键值对辅助类 3 /// </summary> 4 public class JsonParser 5 { 6 7 private static Dictionary<string, string> lst_KeyValueData = null; ...

weixin_30644369的博客 74

浅析JSON.parse() 和 JSON.stringify()

JSON对象在所有现代浏览器中都可以使用,它有两个非常有用的方法来处理JSON格式化的内容:解析和字符串化。JSON.parse() 取一个JSON字符串并将其转换为JavaScript...

前端开发博客 454

C++ JSON处理库 CJsonObject 的使用

C语言使用 JSON一、简介二、使用方法1. 下载引用2. 读取一个文件内容 解析当中的json字符串 一、简介 CJsonObject 是一个基于cJSON开发的、适用于c++的轻量级的JSON处理器。 开源地址: https://gitee.com/Bwar/CJsonObject.git 二、使用方法 1. 下载引用 从官网下载 源码,引用其中的 CJsonObject.hpp。 #include <string> #include <iostream> #include &

猿来这样-谢厂节的博客 7305

【JSON】JSON学习01

什么是JSON 怎么用JSON

骑猪看彩虹的博客 249

JSON数据结构详解(小白版)

JSON对象就像一张表格,用大括号。JSON数组就像一列数据,用中括号。

2401_84637005的博客 1809
上一篇: 59 Linux socket的select编程
下一篇: 61 stm32 USB键盘一直在发送数据
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值