最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

五分鐘帶你學(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ī)器讀寫,文中通過(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ī)器讀寫。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)文章

  • SpringBoot項(xiàng)目接入MQTT的詳細(xì)指南

    SpringBoot項(xiàng)目接入MQTT的詳細(xì)指南

    MQTT是一種輕量級(jí)的消息傳輸協(xié)議,特別適用于物聯(lián)網(wǎng)(IoT)場(chǎng)景,具有低帶寬、高延遲網(wǎng)絡(luò)環(huán)境下的優(yōu)勢(shì),SpringBoot作為流行的 Java開發(fā)框架,能夠方便地與MQTT集成,實(shí)現(xiàn)高效的消息通信,本文將詳細(xì)介紹如何在SpringBoot項(xiàng)目中接入MQTT,需要的朋友可以參考下
    2025-03-03
  • idea 模板編程知識(shí)小結(jié)

    idea 模板編程知識(shí)小結(jié)

    這篇文章主要介紹了idea 模板編程的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java訪問(wèn)者設(shè)計(jì)模式詳細(xì)講解

    Java訪問(wèn)者設(shè)計(jì)模式詳細(xì)講解

    大多數(shù)情況下你不需要訪問(wèn)者模式,但當(dāng)一旦需要訪問(wèn)者模式時(shí),那就是真的需要它了,這是設(shè)計(jì)模式創(chuàng)始人的原話??梢钥闯鰬?yīng)用場(chǎng)景比較少,但需要它的時(shí)候是不可或缺的,這篇文章就開始學(xué)習(xí)最后一個(gè)設(shè)計(jì)模式——訪問(wèn)者模式
    2022-11-11
  • Spring Bean生命周期之BeanDefinition的合并過(guò)程詳解

    Spring Bean生命周期之BeanDefinition的合并過(guò)程詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Bean生命周期之BeanDefinition的合并過(guò)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

    2022-03-03
  • Java基礎(chǔ)學(xué)習(xí)之字符緩沖流的應(yīng)用

    Java基礎(chǔ)學(xué)習(xí)之字符緩沖流的應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Java基礎(chǔ)中的字符緩沖流的相關(guān)應(yīng)用,例如復(fù)制Java文件等,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一
    2022-09-09
  • Java 線程相關(guān)總結(jié)

    Java 線程相關(guān)總結(jié)

    這篇文章主要介紹了Java 線程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java集合和IO流實(shí)現(xiàn)水果攤項(xiàng)目

    Java集合和IO流實(shí)現(xiàn)水果攤項(xiàng)目

    最近閑來(lái)無(wú)事,使用java基礎(chǔ)知識(shí)集合和IO流做了一個(gè)簡(jiǎn)單的小項(xiàng)目,水果攤項(xiàng)目,用到GUI和Mysql數(shù)據(jù)庫(kù)搭建,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • SpringBoot整合MongoDB的步驟詳解

    SpringBoot整合MongoDB的步驟詳解

    這篇文章主要介紹了SpringBoot整合MongoDB的步驟詳解,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下
    2021-04-04
  • Java使用MySQL實(shí)現(xiàn)連接池代碼實(shí)例

    Java使用MySQL實(shí)現(xiàn)連接池代碼實(shí)例

    這篇文章主要介紹了Java使用MySQL實(shí)現(xiàn)連接池代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 解決spring boot2集成activiti6踩過(guò)的坑

    解決spring boot2集成activiti6踩過(guò)的坑

    這篇文章主要介紹了解決spring boot2集成activiti6踩過(guò)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論

元江| 永和县| 靖西县| 寿宁县| 铜鼓县| 瑞昌市| 南汇区| 新竹县| 易门县| 玉山县| 航空| 海晏县| 湖南省| 江山市| 玉屏| 常宁市| 武陟县| 沙雅县| 临泉县| 武威市| 青川县| 阜宁县| 金堂县| 天镇县| 光山县| 志丹县| 岳阳县| 贵南县| 芦溪县| 陆良县| 四平市| 垦利县| 益阳市| 隆子县| 斗六市| 汤原县| 邵武市| 广水市| 大英县| 屯昌县| 墨竹工卡县|