特殊的无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");
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");
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!
1.引言 特殊的key值的json数组今天遇到了,所以研究了会才知道怎么生成和解析这种无键值的json数组。下面我们来看看今天的实验。2.json生成数组实验今天的实验就是生成这样的无key值的json数组,在这里称为数组1。{ "scanPrefix": [ "hello", "hello", "hello", "hello", "hello" ]}...
文章目录前言一、JSON是什么?二、JSON语法1.简单值2.对象3.数组三、JSON和JavaScript对象相互转化1.JSON.stringify()2.JSON.parse()总结
参考红宝书JavaScript高级程序设计第三版
一、JSON是什么?
JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据。
需要注意的是JSON不是一种编程语言
二、JSON语法
JSON语法可以表示以下三种类型的值
1.简单值
语法与JavaScript.
奇葩的json格式,今天调试接口, 发现后台返回一段这样的json格式
看到这个图片数组,当时有点蛋疼,明明不是json格式的, 我以为json的数据类型, 全部都是键值对的, 后来上网查也没查到个所以然来,灵机一动, json,只有俩种格式, 对象和数组, 仔细观察,这个貌似也是数组,只是没有键而已,那是不是也可以当数组来处理呢。 于是乎,如下代码,果然可以解析成功。
String st
"recordId": "1ead6ee3-92c6-41dd-8a80-9447e33d6e96",
"createAt": "2021-10-21 15:34:16",
"status": "None",
"aActivity": 0.2,
"bActivity": 0.3,
"gammaCpsList": [
1.18,
转载自:http://blog.csdn.net/aa4790139/article/details/8587208 感谢原作者!
JSON(JavaScript Object Notation): 是一种轻量级的数据交换格式
一、JSON建构有两种结构:对象和数组
1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构...
解析用的是:JObjectjsonF=(JObject)JsonConvert.DeserializeObject(jsonS)
这句代码,然后取value怎么取?
【如果在[前面加上{"result":,最后加上}我就会用jsonF["result"][...
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the temp
在json大行其道并作为前后端主要通讯的数据格式之一时,对json本身的使用和了解多少人都会有些概念,当然随之而来的也是对json的对象以及其字符串形式的互相转换。在历史久远的过去,前端是通过低能的eval来实现格式转换的。
那么作为常识,我们知道JSON提供了两个常用的工具方法可以实现互相转换,分别是JSON.parse(),以及JSON.stringfy();常识的另外一方面,我们也知道...
没有key的Json,例如:["http://www.cnblogs.com/Cherry-B/p/4625133.html","http://www.cnblogs.com/Cherry-B/p/4619689.html","http://www.cnblogs.com/Cherry-B/p/4613701.html"]
public void alyJson(Stri...
可以使用 Go 语言内置的 json 包来解析包含不同数据类型的 json 数组。具体步骤如下:
1. 定义一个结构体,用于存储 json 数组中的数据。结构体的字段需要与 json 数组中的键名一一对应,并且需要使用 `json` 标签来指定对应的键名。
2. 使用 `json.Unmarshal()` 函数将 json 数组解析为结构体实例。该函数的第一个参数为 json 数组的字节数组,第二个参数为结构体实例的指针。
以下是一个示例代码:
```go
package main
import (
"encoding/json"
"fmt"
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
func main() {
jsonStr := `[{"name":"Alice","age":20},{"name":"Bob","age":25},{"name":"Charlie","age":30,"isMarried":true}]`
var people []Person
err := json.Unmarshal([]byte(jsonStr), &people)
if err != nil {
panic(err)
fmt.Println(people)
在上面的代码中,我们定义了一个 `Person` 结构体,用于存储 json 数组中的数据。然后,我们使用 `json.Unmarshal()` 函数将 json 数组解析为 `[]Person` 类型的切片。最后,我们打印出解析后的结果。
注意,上面的 json 数组中,第三个元素包含了一个额外的键值对 `{"isMarried":true}`,但是我们并没有在 `Person` 结构体中定义对应的字段。在解析时,这个键值对会被忽略。
lrx2712:
58 ESP32 OTA升级(双OTA分区无factory APP)
芯的一天:
51 单片机AD采集电压值的坑
45 STM32 IIC主机、从机通信实例(ma51t12b触摸按键芯片)
qq_41547304:
问题:warning: libssl.so.1.0.0, needed by …lib/libcurl.so, not found (try using -rpath or -rpath-link)
袖手,红尘: