JSON使用笔记

JSON

简介:

JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.

2.1 对象格式

//java类表示
	class Book{ 
		private String name; 
		private String info;
		//其他方法
		get/set... 
	}
	//创建对象
	Book b = new Book(); 
	b.setName(“金苹果”); 
	b.setInfo(“种苹果”); 
	
//XML:
	<book>
		<name>金苹果</name> 
		<info>种苹果</info> 
	</book> 
	
//JSON:
	{ 
		"name":"金苹果", 
		"info":"种苹果" 
	} 

一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.)

{
	"key1":"value1",
	"key2":"value2",
	"key3":"value3",
	"key4":"value4"
}
格式:
	键与值之间使用冒号连接, 多个键值对之间使用逗号分隔. 
	键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.) 
	键值对的值, 可以是JS中的任意类型的数据

2.2 数组格式

在JSON格式中可以与对象互相嵌套

[元素1,元素2...]

2.3 案例

{ 
	"name":"小明", 	
	"age":18, 
	"pengyou":["张三","李四","王五","麻子",
				{ 
					"name":"老师", 
					"info":"技术钻研" 
					}
				], 
	"heihei":{ 
			"name":"大长刀", 
			"length":"40m" 
			} 
}

主要是理解 数组中可以放对象,对象中可以放数组 的思想,先不必深究, 后面有案例解释

3 Gson

谷歌的解析工具

转换JSON字符串的步骤: 
	1. 引入JAR包 
	2. 在需要转换JSON字符串的位置编写如下代码即可: 
	String json = new Gson().toJSON(要转换的对象); 
	3. 在需要转换Java对象的位置, 编写如下代码: 
	对象 = new Gson().fromJson(JSON字符串,对象类型.class); 

案例:

//要转换的Book对象
public class Book {
    private String id;
    private String name;
    private String info;
    
    @Override
    public String toString() {
        return "Book{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", info='" + info + '\'' +
                '}';
    }
    public Book(String id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }
}

将对象转换为JSON字符串

Book b = new Book(100, "金苹果","种植苹果");
//1.创建Gson对象
Gson g = new Gson();
//转换
String s = g.toJson(b);
//输出
System.out.println(s);

在这里插入图片描述

将JSON字符串转换为对象

//1.创建Gson对象
Gson g = new Gson();
//2.转换 ,在字符串中使用转义字符\,即\"表示”  
Book b = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果\"}"
		, Book.class);

System.out.println(b.getId());

在这里插入图片描述

其他案例(由此可理解数组格式的案例)

//1.    创建Gson对象
Gson g = new Gson();
//2.    转换  包含数组格式的JSON
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"谁知盘中餐\"]}"
        		, HashMap.class);
//获取page内容
System.out.println(data.get("page"));
 //获取page类型
System.out.println(data.get("page").getClass());
//用集合获取
List page = (List) data.get("page");
System.out.println(page.get(0));
System.out.println(page.get(1));
System.out.println(page.get(2));		    

在这里插入图片描述
由此可见,数组格式的类型是ArrayLisy。
如果数组中再添加对象呢

//1.    创建Gson对象
Gson g = new Gson();
//2.    转换 
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\"" +
                        ",{\"name\":\"老师\",\"info\":\"技术钻研\" }]}"
                    , HashMap.class);
//获取page内容
System.out.println(data.get("page"));
//获取page类型
System.out.println(data.get("page").getClass());
//用集合获取
List page = (List) data.get("page");
System.out.println(page.get(0));
System.out.println(page.get(1));
System.out.println(page.get(2));
//获取对象类型
System.out.println(page.get(2).getClass());

在这里插入图片描述
由此可见,数组中加入的对象类型是LinkedTreeMap

4 FastJson

步骤:
	1. 引入JAR包 
	2. 在需要转换JSON字符串的位置编写如下代码即可: 
		String json=JSON.toJSONString(要转换的对象); 
	3. 在需要转换Java对象的位置, 编写如下代码: 
	类型 对象名=JSON.parseObject(JSON字符串, 类型.class); 
		或 
	List<类型> list=JSON.parseArray(JSON字符串,类型.class); 

将对象转换为JSON字符串

Book book = new Book("1002","唐诗","床前明月光");
//转换
String json = JSON.toJSONString(book);
System.out.println(json);

在这里插入图片描述

将JSON字符串转换为对象

Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光\",\"name\":\"唐诗\"}"
			, Book.class);
System.out.println(book.getId());
System.out.println(book.getName());
System.out.println(book.getInfo());

在这里插入图片描述

其他案例(数组)

//转换
List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
System.out.println(strings.get(0));
System.out.println(strings.get(1));
System.out.println(strings.get(2));

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
esp32使用json的步骤可以分为以下几步: 1. 引用中的方法,使用`deserializeJson`函数对接收到的json文件进行解析。该函数接受两个参数,第一个参数是建立的DynamicJsonDocument对象,第二个参数是获取到的json文件(类型为String)。 2. 根据引用中的内容,了解JSON的基础概念、语法规则和数据类型。JSON包括数字、字符串、逻辑值、数组和对象等数据类型。 3. 以引用中的解析JSON数据为例,可以使用`cJSON_Parse`函数将给定的JSON字符串转换为cJSON对象。 4. 使用相应的库函数来操作cJSON对象,例如使用`cJSON_GetObjectItem`函数根据键获取对应的值,使用`cJSON_GetArrayItem`函数根据下标获取cJSON对象数组中的对象,使用`cJSON_AddStringToObject`函数新增一个字符串类型的字段到JSON格式的数据等。 5. 在使用完cJSON对象后,使用`cJSON_Delete`函数释放链表占用的内存空间。 总结起来,使用ESP32处理JSON数据的过程包括解析JSON数据、操作cJSON对象以及释放内存空间等步骤。根据具体的需求和场景,可以使用不同的库函数来实现相应的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ESP32超详细学习记录:JSON解析(利用ArduinoJson库)](https://blog.csdn.net/qq_41650023/article/details/124668884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【ESP32_8266_WiFi (九)】JSON基础](https://blog.csdn.net/K3169/article/details/127838227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ESP8266学习笔记(8)——第三方库cJSON使用](https://blog.csdn.net/qq_36347513/article/details/86691835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值