欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳細(xì)JSON解析教程

 更新時(shí)間:2023年08月08日 11:07:58   作者:周里奧  
JSON即JS對(duì)象簡(jiǎn)譜 , 是一種輕量級(jí)的數(shù)據(jù)交換格式,Java官方?jīng)]有提供JSON解析相應(yīng)的API,本文提供兩個(gè)最常用的JSON解析方法,分別是Google的Gson,阿里的FastJson,使用JSON解析之前要先獲取相應(yīng)的jar包,感興趣的朋友一起看看吧

1. 了解JSON

簡(jiǎn)介:JSON(JavaScript Object Notation),即JS對(duì)象簡(jiǎn)譜 , 是一種輕量級(jí)的數(shù)據(jù)交換格式。

進(jìn)一步理解:

  • JSON和JavaScript的關(guān)系:兩者之間的關(guān)系就是雷鋒和雷鋒塔的關(guān)系,兩者之間沒(méi)有什么關(guān)系;
  • 數(shù)據(jù)交換格式:實(shí)現(xiàn)客戶(hù)端與服務(wù)器之間的數(shù)據(jù)交換,當(dāng)時(shí)通用的數(shù)據(jù)交換語(yǔ)言是XML,但是Douglas crockford覺(jué)得xml的生成和解析都太麻煩,所以他提出了一種簡(jiǎn)化格式,也就是json;(更具體見(jiàn)4.JSON解析)
  • 輕量級(jí)是對(duì)比而言的,JSON 簡(jiǎn)單的語(yǔ)法格式和清晰的層次結(jié)構(gòu)明顯要比 XML 容易閱讀,并且在數(shù)據(jù)交換方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得節(jié)約傳輸數(shù)據(jù)所占用得帶寬。

2.JSON對(duì)象格式

試著用不同的語(yǔ)言描述一本書(shū)(對(duì)象):書(shū)名+內(nèi)容,能夠看出JSON在輕量級(jí)這塊的優(yōu)勢(shì)

Java

Public class Test {
	public static void main() {
		Book b = new Book();
		b.setName(“金蘋(píng)果”); 
		b.setInfo(“種蘋(píng)果好辛苦”);
	}
}
class Book {
	private String name;
	private String info;
	構(gòu)造方法;
	get/set方法...
}

JavaScript

var b = new Object();
	b.name = "金蘋(píng)果"; 
	b.info = "種蘋(píng)果好辛苦";

XML

<book>
	<name>金蘋(píng)果</name>
	<info>種蘋(píng)果好辛苦</info> 
</book>

JSON

{ 
	"name":"金蘋(píng)果",
 	"info":"種蘋(píng)果好辛苦" 
}

3.JSON語(yǔ)法格式(建議結(jié)合案例對(duì)比著看)

  • 一個(gè)對(duì)象由一個(gè)大括號(hào)表示,大括號(hào)中通過(guò)鍵值對(duì)來(lái)描述對(duì)象的屬性 (可以理解為,大括號(hào)中,包含的是一個(gè)個(gè)的鍵值對(duì));
  • 鍵與值之間使用冒號(hào)連接,多個(gè)鍵值對(duì)之間使用逗號(hào)分隔;
  • 鍵值對(duì)的鍵應(yīng)使用引號(hào)引住 (通常Java解析時(shí),鍵不使用引號(hào)會(huì)報(bào)錯(cuò)。而JS能正確解析);
  • 鍵值對(duì)的值, 可以是JS中的任意類(lèi)型的數(shù)據(jù);
  • 數(shù)組格式:[元素1,元素2…];
  • 在JSON格式中可以互相嵌套,比如對(duì)象1里出現(xiàn)數(shù)組1,數(shù)組1里又出現(xiàn)對(duì)象2。

案例

{
	"name":"種水果",
	"info":"種水果好辛苦",
	"fruit":["蘋(píng)果","香蕉",{
				"name":"西瓜",
				"info":"無(wú)籽西瓜"
			}],
	"haha":{
		"name":"大長(zhǎng)刀",
		"length":"40cm"
	}
}

4.JSON解析

Java用JSON做什么?上面也說(shuō)過(guò)了,用來(lái)實(shí)現(xiàn)數(shù)據(jù)交換。我們知道JSON存的數(shù)據(jù)類(lèi)型是字符串,并且這個(gè)字符串由一個(gè)個(gè)鍵值對(duì)組成,像極了Java對(duì)象里屬性和值的關(guān)系。我們想能不能通過(guò)某種辦法把JSON字符串變成Java相應(yīng)的對(duì)象、實(shí)現(xiàn)對(duì)數(shù)據(jù)方便地操作呢?或者我們想把Java對(duì)象的信息變成JSON字符串展示給別人看呢?下面引入JSON解析的概念。

  • 序列化:將Java中的對(duì)象快速的轉(zhuǎn)換為 JSON格式的字符串。
  • 反序列化:將JSON格式的字符串, 轉(zhuǎn)換為Java的對(duì)象。

Java官方?jīng)]有提供JSON解析相應(yīng)的API,本文提供兩個(gè)最常用的JSON解析方法,分別是Google的Gson,阿里的FastJson,使用JSON解析之前要先獲取相應(yīng)的jar包。

Gson解析

  • 將對(duì)象轉(zhuǎn)換為JSON字符串,步驟:

引入jar包

在需要轉(zhuǎn)換JSON字符串的位置編寫(xiě)如下代碼即可: String json = new Gson().toJSON(要轉(zhuǎn)換的對(duì)象);

案例

Book b = new Book("金蘋(píng)果","講述了種植蘋(píng)果的心酸歷程",20,100);	
	String json = new Gson().toJson(b);
	System.out.println(json);

輸出結(jié)果

{"name":"金蘋(píng)果","info":"講述了種植蘋(píng)果的心酸歷程","prize":20,"page":100}

將JSON字符串轉(zhuǎn)換為對(duì)象,步驟:

1.引入jar包

2.在需要轉(zhuǎn)換Java對(duì)象的位置, 編寫(xiě)如下代碼: 類(lèi)型 對(duì)象 = new Gson().fromJson(JSON字符串,對(duì)象類(lèi)型.class);

案例1

String json1 = "{\"name\":\"金蘋(píng)果\",\"info\":\"講述了種植蘋(píng)果的心酸歷程\",\"prize\":10,\"page\":100}";
	Book b1 = new Gson().fromJson(json,Book.class);
	System.out.println(b1.getPrize());

輸出結(jié)果

    10

案例2

注意:字符串最外層有花括號(hào)’{}’,英文引號(hào)前有轉(zhuǎn)義字符\

//		如果字符串信息和對(duì)象信息不匹配 ,則字符串轉(zhuǎn)hashmap對(duì)象,因?yàn)閔ashmap類(lèi)型也是按鍵值對(duì)存儲(chǔ)。
	String json2 = "{\"name\":\"金蘋(píng)果\",\"info\":\"講述了種植蘋(píng)果的心酸歷程\",\"prize\":20,\"page\":100,\"content\":[\"鋤禾日當(dāng)午\",\"汗滴禾下土\",\"呵呵呵呵呵\"]}";
	HashMap map = new Gson().fromJson(json2,HashMap.class);
	System.out.println(map.get("content"));
	//		這里說(shuō)明一下,如果字符串里有數(shù)組,轉(zhuǎn)HashMap后,數(shù)組按List存儲(chǔ)(動(dòng)手試一下)
	ArrayList list = (ArrayList) map.get("content");
	System.out.println(list.get(0));

輸出結(jié)果

    [鋤禾日當(dāng)午,汗滴禾下土,呵呵呵呵呵]
    鋤禾日當(dāng)午

FastJson解析

  • 將對(duì)象轉(zhuǎn)換為JSON字符串,步驟:

引入jar包

在需要轉(zhuǎn)換JSON字符串的位置編寫(xiě)如下代碼即可: String json=JSON.toJSONString(要轉(zhuǎn)換的對(duì)象);

案例

Book b = new Book("金蘋(píng)果","講述了種植蘋(píng)果的心酸歷程",20,100);
	String fastJson = JSON.toJSONString(b);
	System.out.println(fastJson);

輸出結(jié)果

{"info":"講述了種植蘋(píng)果的心酸歷程","name":"金蘋(píng)果","page":100,"prize":20}

將JSON字符串轉(zhuǎn)換為對(duì)象,步驟:

引入jar包

在需要轉(zhuǎn)換Java對(duì)象的位置, 編寫(xiě)如下代碼: 類(lèi)型 對(duì)象名=JSON.parseObject(JSON字符串, 類(lèi)型.class); 或 List<類(lèi)型> list=JSON.parseArray(JSON字符串,類(lèi)型.class);

案例1

Book b1 = JSON.parseObject("{\"name\":\"金蘋(píng)果\",\"info\":\"講述了種植蘋(píng)果的心酸歷程\",\"prize\":20,\"page\":100}",Book.class);
	System.out.println(b1);

運(yùn)行結(jié)果

    Book{name='金蘋(píng)果', info='講述了種植蘋(píng)果的心酸歷程', prize=20, page=100}

案例2:數(shù)組轉(zhuǎn)為list集合

List<String> list = JSON.parseArray("[\"鋤禾日當(dāng)午\",\"汗滴禾下土\",\"呵呵呵呵呵\"]",String.class);
	System.out.println(list.get(1));

運(yùn)行結(jié)果

    汗滴禾下土

案例3:解析一段稍微復(fù)雜的JSON案例

{
	"name":"種水果",
	"info":"種水果好辛苦",
	"fruit":["蘋(píng)果","香蕉",{
				"name":"西瓜",
				"info":"無(wú)籽西瓜"
			}],
	"haha":{
		"name":"大長(zhǎng)刀",
		"length":"40cm"
	}
}

代碼

String json = "[{
						"name":"種水果",
						"info":"種水果好辛苦",
						"fruit":["蘋(píng)果","香蕉",{
										"name":"西瓜",
										"info":"無(wú)籽西瓜"
								}],
						"haha":{
						"name":"大長(zhǎng)刀",
						"length":"40cm"
						}
					}]";
	//1.	最外層是數(shù)組格式,這里數(shù)組只包含一個(gè)元素
	List<Map> list = JSON.parseArray(json,Map.class);
    Map map = list.get(0);
    String info = (String) map.get("info");
    System.out.println(info);   //種水果好辛苦
    //2.	鍵fruit對(duì)應(yīng)的值類(lèi)型是數(shù)組,用到方法toJSONString()將數(shù)組轉(zhuǎn)成字符串格式,再進(jìn)行解析
    String fruit = JSON.toJSONString(map.get("fruit"));
    List<String> list1 = JSON.parseArray(fruit,String.class);
    System.out.println(list1.get(0));   //蘋(píng)果
    //      字符串轉(zhuǎn)對(duì)象
    Map map1 = JSON.parseObject(list1.get(2),Map.class);
    System.out.println(map1.get("info"));   //無(wú)籽西瓜

運(yùn)行結(jié)果

的的的的

總結(jié)

  • JSON解析無(wú)非就兩種情況:序列化和反序列化,序列化簡(jiǎn)單一些,反序列化注意一下對(duì)象的類(lèi)型;
  • 最外層對(duì)這里的字符串加了"[]",初試為數(shù)組;
  • toJSONString()方法,實(shí)現(xiàn)數(shù)組向字符串的轉(zhuǎn)化;
  • 建議動(dòng)手敲一下代碼,體會(huì)更深一些。

參考資料

1.JSON基本使用

2.FastJson的簡(jiǎn)單使用

到此這篇關(guān)于詳細(xì)Java JSON解析教程的文章就介紹到這了,更多相關(guān)json解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • DeepSeek?Window本地私有化部署教程

    DeepSeek?Window本地私有化部署教程

    本文介紹了如何在Windows電腦上本地部署DeepSeekR1大模型,包括安裝Ollama工具、下載DeepSeekR1模型、安裝圖形化交互界面CherryStudio等步驟,部署過(guò)程中強(qiáng)調(diào)了隱私安全和響應(yīng)速度快的優(yōu)勢(shì)
    2025-02-02
  • 關(guān)于Git遠(yuǎn)程與本地沖突的解決方法

    關(guān)于Git遠(yuǎn)程與本地沖突的解決方法

    這篇文章主要給大家介紹了關(guān)于Git遠(yuǎn)程與本地沖突的解決方法,文中給出了詳細(xì)的解決方法,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • WebStorm打開(kāi)多個(gè)項(xiàng)目的三種方法總結(jié)

    WebStorm打開(kāi)多個(gè)項(xiàng)目的三種方法總結(jié)

    WebStorm支持多項(xiàng)目管理,本文介紹了三種方法:使用項(xiàng)目導(dǎo)航面板、窗口分割和多個(gè)WebStorm實(shí)例,項(xiàng)目導(dǎo)航面板可以在同一窗口內(nèi)管理多個(gè)項(xiàng)目,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • mathtype的下載與使用技巧超詳細(xì)教程

    mathtype的下載與使用技巧超詳細(xì)教程

    這篇文章主要介紹了mathtype的下載與使用超詳細(xì)教程,包括mathtype使用技巧常用快捷鍵,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • 趁熱打鐵!HTTPGet與HTTPPost的區(qū)別詳解

    趁熱打鐵!HTTPGet與HTTPPost的區(qū)別詳解

    這篇文章主要介紹了趁熱打鐵!HTTPGet與HTTPPost的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 漢明碼編碼原理及校驗(yàn)方法分析

    漢明碼編碼原理及校驗(yàn)方法分析

    漢明碼在傳輸?shù)南⒘髦胁迦腧?yàn)證碼,當(dāng)計(jì)算機(jī)存儲(chǔ)或移動(dòng)數(shù)據(jù)時(shí),可能會(huì)產(chǎn)生數(shù)據(jù)位錯(cuò)誤,以偵測(cè)并更正單一比特錯(cuò)誤。由于漢明編碼簡(jiǎn)單,它們被廣泛應(yīng)用于內(nèi)存RAM
    2021-09-09
  • SVN與Git版本控制的優(yōu)缺點(diǎn)差異全面分析

    SVN與Git版本控制的優(yōu)缺點(diǎn)差異全面分析

    這篇文章主要為大家介紹了SVN與Git版本控制的優(yōu)缺點(diǎn)差異全面分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • selenium IDE自動(dòng)化測(cè)試腳本的實(shí)現(xiàn)

    selenium IDE自動(dòng)化測(cè)試腳本的實(shí)現(xiàn)

    本文主要介紹了selenium IDE自動(dòng)化測(cè)試腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • github pull最新代碼實(shí)現(xiàn)方法

    github pull最新代碼實(shí)現(xiàn)方法

    本文主要介紹 github pull最新代碼的資料,這里對(duì) github pull最新代碼做了詳細(xì)流程介紹,有需要的小伙伴可以參考下
    2016-09-09
  • 從學(xué)習(xí)到接單賺錢(qián) 十大網(wǎng)絡(luò)技術(shù)人員推薦收藏的網(wǎng)站

    從學(xué)習(xí)到接單賺錢(qián) 十大網(wǎng)絡(luò)技術(shù)人員推薦收藏的網(wǎng)站

    這篇文章主要介紹了從學(xué)習(xí)到接單賺錢(qián) 十大網(wǎng)絡(luò)技術(shù)人員推薦收藏的網(wǎng)站,需要的朋友可以參考下
    2015-08-08

最新評(píng)論