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

Java解析使用JSON的多種方法

 更新時間:2022年12月23日 14:51:26   投稿:yin  
使用JSON作為數(shù)據(jù)傳輸,在瀏覽器端非常方便。JSON去除了所有JavaScript執(zhí)行代碼,只保留對象格式,而且JSON天生適合JavaScript處理,所以,絕大多數(shù)REST?API都選擇JSON作為數(shù)據(jù)傳輸格式?,F(xiàn)在問題來了:使用Java如何對JSON進(jìn)行讀寫?

XML的特點是功能全面,但標(biāo)簽繁瑣,格式復(fù)雜。在Web上使用XML現(xiàn)在越來越少,取而代之的是JSON這種數(shù)據(jù)結(jié)構(gòu)。JSON是JavaScript Object Notation的縮寫,它去除了所有JavaScript執(zhí)行代碼,只保留JavaScript的對象格式。

開發(fā)Web應(yīng)用的時候,使用JSON作為數(shù)據(jù)傳輸,在瀏覽器端非常方便。因為JSON天生適合JavaScript處理,所以,絕大多數(shù)REST API都選擇JSON作為數(shù)據(jù)傳輸格式?,F(xiàn)在問題來了:使用Java如何對JSON進(jìn)行讀寫?

JSON優(yōu)缺點介紹

JSON是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于閱讀和編寫,同時也易于解析和生成,可以在多種語言之間進(jìn)行數(shù)據(jù)交換,并有效地提升網(wǎng)絡(luò)傳輸效率,同時也易于機器解析和生成。它是基于ECMAScript的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣。

優(yōu)點:

1、數(shù)據(jù)格式比較簡單,易于編程人員閱讀和編寫,同時也易于計算機生成和解析。

2、支持多種語言,包括ActionScript,C,C#,ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等語言服務(wù)器端語言,便于服務(wù)器端的解析。

3、因為JSON格式能夠直接被服務(wù)器端代碼使用,大大簡化了服務(wù)器端和客戶端的代碼開發(fā)量,但是完成的任務(wù)不變,且易于維護(hù)。

缺點:

1、語法嚴(yán)謹(jǐn),必須符合JSON語法規(guī)則。

2、要求字符集必須是Unicode,約束性強。

類庫選擇

在Java中,并沒有內(nèi)置JSON的解析,針對JSON也有標(biāo)準(zhǔn)的JSR 353 API,但是我們在前面講XML的時候發(fā)現(xiàn),如果能直接在XML和JavaBean之間互相轉(zhuǎn)換是最好的。類似的,如果能直接在JSON和JavaBean之間轉(zhuǎn)換,那么用起來就簡單多了。

因此使用JSON需要借助第三方類庫。下面是幾個常用的 JSON 解析類庫:

類型特點
傳統(tǒng)JSON方式復(fù)雜的Json數(shù)據(jù)轉(zhuǎn)換成實體類存在缺陷,性能和功能不夠完善
Jackson方式復(fù)雜的Json數(shù)據(jù)轉(zhuǎn)換成實體類存在缺陷,性能和功能優(yōu)于傳統(tǒng)方式
Gson方式功能方面在幾種方式中最優(yōu),性能方面不如Jackson方式
FastJson方式復(fù)雜的實體類轉(zhuǎn)換成Json數(shù)據(jù)存在缺陷,解析json的速度優(yōu)于其他方式

FastJson教程講解

環(huán)境配置

在 Maven 構(gòu)建的項目中,在 pom.xml 文件中加入以下依賴即可。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

編碼

從 Java 變量到 JSON 格式的編碼過程如下:

實例

public void testJson() {
    JSONObject object = new JSONObject();
    //string
    object.put("string","string");
    //int
    object.put("int",2);
    //boolean
    object.put("boolean",true);
    //array
    List<Integer> integers = Arrays.asList(1,2,3);
    object.put("list",integers);
    //null
    object.put("null",null);
?
    System.out.println(object);
}

在上例中,首先建立一個 JSON 對象,然后依次添加字符串、整數(shù)、布爾值以及數(shù)組,最后將其打印為字符串。

輸出結(jié)果如下:

{"boolean":true,"string":"string","list":[1,2,3],"int":2}

解碼

從 JSON 對象到 Java 變量的解碼過程如下:

實例

public void testJson2() {
?
  JSONObject object = JSONObject
      .parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}");
  //string
  String s = object.getString("string");
  System.out.println(s);
  //int
  int i = object.getIntValue("int");
  System.out.println(i);
  //boolean
  boolean b = object.getBooleanValue("boolean");
  System.out.println(b);
  //list
  List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);
  integers.forEach(System.out::println);
  //null
  System.out.println(object.getString("null"));
?
}

在上例中,首先從 JSON 格式的字符串中構(gòu)造一個 JSON 對象,之后依次讀取字符串、整數(shù)、布爾值以及數(shù)組,最后分別打印,打印結(jié)果如下:

string
2
true
1
2
3
null

JSON 對象與字符串的相互轉(zhuǎn)化

方法作用
JSON.parseObject()從字符串解析 JSON 對象
JSON.parseArray()從字符串解析 JSON 數(shù)組
JSON.toJSONString(obj/array)將 JSON 對象或 JSON 數(shù)組轉(zhuǎn)化為字符串

實例

//從字符串解析JSON對象
JSONObject obj = JSON.parseObject("{\"jb51\":\"腳本之家\"}");
//從字符串解析JSON數(shù)組
JSONArray arr = JSON.parseArray("[\"腳本之家\",\"JB51\"]\n");
//將JSON對象轉(zhuǎn)化為字符串
String objStr = JSON.toJSONString(obj);
//將JSON數(shù)組轉(zhuǎn)化為字符串
String arrStr = JSON.toJSONString(arr);

到此這篇關(guān)于Java解析使用JSON的多種方法的文章就介紹到這了,更多相關(guān)Java解析JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基于Swing實現(xiàn)的打獵射擊游戲代碼

    Java基于Swing實現(xiàn)的打獵射擊游戲代碼

    這篇文章主要介紹了Java基于Swing實現(xiàn)的打獵射擊游戲代碼,包含完整的游戲事件處理與邏輯流程控制,具有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • java學(xué)生信息管理系統(tǒng)源代碼

    java學(xué)生信息管理系統(tǒng)源代碼

    這篇文章主要為大家詳細(xì)介紹了java學(xué)生信息管理系統(tǒng)源代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 實例展示使用Java壓縮和解壓縮7z文件的方法

    實例展示使用Java壓縮和解壓縮7z文件的方法

    這篇文章主要介紹了實例展示使用Java壓縮和解壓縮7z文件的方法,用到了7-zip的開源項目7-zip-JBinding,需要的朋友可以參考下
    2015-11-11
  • Java如何使用JSR303校驗數(shù)據(jù)與自定義校驗注解

    Java如何使用JSR303校驗數(shù)據(jù)與自定義校驗注解

    這篇文章主要介紹了Java如何使用JSR303校驗數(shù)據(jù)與自定義校驗注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • JavaWeb實現(xiàn)裁剪圖片上傳完整代碼

    JavaWeb實現(xiàn)裁剪圖片上傳完整代碼

    這篇文章主要為大家詳細(xì)介紹了javaWeb實現(xiàn)裁剪圖片上傳完整代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C# log4net使用案例詳解

    C# log4net使用案例詳解

    這篇文章主要介紹了C# log4net使用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 探索Java中private方法添加@Transactional事務(wù)未生效原因

    探索Java中private方法添加@Transactional事務(wù)未生效原因

    你又遇到過明明給private方法添加了@Transactional但是事務(wù)依然沒有生效的情況嗎,具體原因本篇文章將詳細(xì)告訴你,有需要的朋友跟著小編往下看吧
    2021-11-11
  • Java實現(xiàn)循環(huán)體的過濾器的方法

    Java實現(xiàn)循環(huán)體的過濾器的方法

    這篇文章主要介紹了Java實現(xiàn)循環(huán)體的過濾器的方法,需要的朋友可以參考下
    2014-02-02
  • SpringCloud兩種注冊中心的實現(xiàn)

    SpringCloud兩種注冊中心的實現(xiàn)

    本文主要介紹了SpringCloud兩種注冊中心的實現(xiàn),包括服務(wù)注冊、服務(wù)拉取、負(fù)載均衡和實例權(quán)重配置等,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • Spring Profiles使用方法詳解

    Spring Profiles使用方法詳解

    在你剛接觸SpringBoot的時候有沒有對它提供的Profile有些許不適應(yīng),經(jīng)過摸索后才領(lǐng)悟到它的強大。今天我就對Profile進(jìn)行一點歸納總結(jié),留作互聯(lián)網(wǎng)記憶
    2022-12-12

最新評論

萍乡市| 安岳县| 盖州市| 怀来县| 察哈| 那坡县| 南宫市| 麻城市| 科技| 普陀区| 隆回县| 那曲县| 木兰县| 岱山县| 长乐市| 封丘县| 汉寿县| 博兴县| 三亚市| 江孜县| 石林| 门头沟区| 兴国县| 天台县| 连南| 丹凤县| 徐闻县| 余干县| 高唐县| 时尚| 金塔县| 丹阳市| 噶尔县| 武穴市| 晋城| 泾阳县| 江西省| 金塔县| 朝阳县| 哈密市| 宜阳县|