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

五分鐘帶你學(xué)會(huì)用java解析json字符串

 更新時(shí)間:2023年07月07日 15:51:37   作者:日出前的千夜  
這篇文章主要給大家介紹了關(guān)于用java解析json字符串的相關(guān)資料,JSON是一種輕量級(jí)的、基于文本的、與語(yǔ)言無(wú)關(guān)的數(shù)據(jù)交換格式,易于人和機(jī)器讀寫(xiě),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

在工作中我們常常使用json來(lái)存儲(chǔ)和傳輸結(jié)構(gòu)化的數(shù)據(jù),如用戶信息、配置信息等。它通常以string的方式進(jìn)行傳輸,因此如何將string解析并得到我們想要的信息是一項(xiàng)必備且常用的功能。

JSON(JavaScript Object Notation)是一種輕量級(jí)的、基于文本的、與語(yǔ)言無(wú)關(guān)的數(shù)據(jù)交換格式,易于人和機(jī)器讀寫(xiě)。JSON可以表示兩種結(jié)構(gòu)化類型:對(duì)象和數(shù)組。對(duì)于每一個(gè)對(duì)象,它內(nèi)部的值可以是字符串、整數(shù)、布爾值、空值,以及json對(duì)象和數(shù)組。下面是來(lái)自維基百科的簡(jiǎn)單示例,它顯示了描述一個(gè)人的對(duì)象的JSON 表示。該對(duì)象具有名字和姓氏的字符串值、年齡的數(shù)字值、表示人地址的對(duì)象值以及電話號(hào)碼對(duì)象的數(shù)組值。我們將以此為例說(shuō)明如何在java中解析它。

示例:

{
    "firstName": "John",
    "lastName": "Smith",
    "age": 25,
    "address": {
        "streetAddress": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": 10021
    },
    "phoneNumbers": [
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "fax",
            "number": "646 555-4567" 
        }
    ] 
}

引入使用的包:

//引入解析json常用的包
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;
//將jsonStr中的數(shù)據(jù)提取出來(lái),轉(zhuǎn)化成Person類,Person類已經(jīng)根據(jù)json的格式設(shè)定好
public static Person jsonParse(String jsonStr){
	//將json string轉(zhuǎn)化為json object
	JSONObject jo = new JSONObject(jsonStr);
	//初始化目標(biāo)值
	Person person = new Person();
	//獲取值為String類型的成員變量
	String firstName = jo.getString("firstName");
	String lastName = jo.getString("lastName");
	person.setFirstName(firstName);
	person.setLastName(lastName);
	//獲取值為int類型的成員變量
	int age = jo.getInt("age");
	person.setAge(age);
	//獲取值為Object類型的成員變量(如上套娃)
	//Address類已經(jīng)根據(jù)json的格式設(shè)定好
	JSONObject addressObj = jo.getJSONObject("address");
	Address address = new Address();
	String streetAddress = addressObj.getString("addressObj");
	address.setStreetAddress(streetAddress);
	...
	person.setAddress(address);
	//獲取值為array類型的成員變量
	//PhoneNumber類已經(jīng)根據(jù)json的格式設(shè)定好
	List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>();
	JSONArray phoneNumbersjson = jo.getJSONArray("phoneNumbers");
	for(int i=0;i<phoneNumbersjson.length();i++){
		//套娃解析其中每一個(gè)對(duì)象
		PhoneNumber phoneNumber = new PhoneNumber();
		JSONObject phoneNumberObj = phoneNumbersjson.getJSONObject(i);
		String type = phoneNumberObj.getString("type");
		phoneNumber.setType(type);
		String number = phoneNumberObj.getString("number");
		phoneNumber.setType(number);
		//將解析好的對(duì)象加入數(shù)組
		phoneNumbers.add(phoneNumber);
	}
	person.setPhoneNumbers(phoneNumbers);
}

json的結(jié)構(gòu),無(wú)非是值,或者對(duì)象和數(shù)組的反復(fù)套娃,將這三種類型的解析方法掌握了,便不怕任何復(fù)雜結(jié)構(gòu)的json了。是不是很簡(jiǎn)單?

Reference:
https://www.geeksforgeeks.org/parse-json-java/

總結(jié)

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

相關(guān)文章

  • Java中Socket用法詳解

    Java中Socket用法詳解

    本文詳細(xì)講解了Java中Socket的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Netty組件NioEventLoopGroup創(chuàng)建線程執(zhí)行器源碼解析

    Netty組件NioEventLoopGroup創(chuàng)建線程執(zhí)行器源碼解析

    這篇文章主要介紹了Netty組件NioEventLoopGroup創(chuàng)建線程執(zhí)行器源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • java實(shí)現(xiàn)模擬RPG格斗

    java實(shí)現(xiàn)模擬RPG格斗

    這篇文章主要介紹了java實(shí)現(xiàn)模擬RPG格斗,每個(gè)英雄具有以下幾個(gè)屬性:生命值(為0時(shí)英雄倒下)、攻擊力(每次攻擊時(shí)扣除對(duì)方的生命值點(diǎn)數(shù))、攻擊間隔(每次攻擊過(guò)后都要等待間隔時(shí)間才能進(jìn)行下次攻擊首次攻擊之前也要先等待間隔時(shí)間)簡(jiǎn)單設(shè)置了下吧,小伙伴可以參考下
    2015-03-03
  • Java利用正則取標(biāo)簽之間的數(shù)據(jù)

    Java利用正則取標(biāo)簽之間的數(shù)據(jù)

    這篇文章主要介紹了Java利用正則取標(biāo)簽之間的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • SpringBoot測(cè)試配置屬性與web啟動(dòng)環(huán)境超詳細(xì)圖解

    SpringBoot測(cè)試配置屬性與web啟動(dòng)環(huán)境超詳細(xì)圖解

    Web開(kāi)發(fā)的核心內(nèi)容主要包括內(nèi)嵌的Servlet容器和SpringMVCSpringBoot使用起來(lái)非常簡(jiǎn)潔,大部分配置都有SpringBoot自動(dòng)裝配,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • Java利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類

    Java利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類

    貝葉斯分類算法是統(tǒng)計(jì)學(xué)的一種分類方法,它是一類利用概率統(tǒng)計(jì)知識(shí)進(jìn)行分類的算法。本文將利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類,需要的可以參考一下
    2022-06-06
  • 一文吃透Spring集成MyBatis

    一文吃透Spring集成MyBatis

    spring能集成很多的框架,是spring一個(gè)優(yōu)勢(shì)功能,通過(guò)集成功能,讓開(kāi)發(fā)人員使用其他框架更方便,本文將給大家詳細(xì)介紹Spring如何集成MyBatis,,需要的朋友可以參考下
    2023-05-05
  • 快速理解Java垃圾回收和jvm中的stw

    快速理解Java垃圾回收和jvm中的stw

    這篇文章主要介紹了快速理解Java垃圾回收和jvm中的stw,涉及Java代碼的停頓,jvm中的線程等相關(guān)內(nèi)容,還是十分不錯(cuò)的,需要的朋友可以參考。
    2017-10-10
  • Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼

    Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 內(nèi)存屏障由來(lái)及實(shí)現(xiàn)思路

    內(nèi)存屏障由來(lái)及實(shí)現(xiàn)思路

    這篇文章主要為大家詳細(xì)介紹了內(nèi)存屏障由來(lái)及實(shí)現(xiàn)思路的詳細(xì)講解,讓大家徹底的理解內(nèi)存屏障,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-01-01

最新評(píng)論