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

JSON.toJSONString()方法在Java中的使用方法及應(yīng)用場(chǎng)景

 更新時(shí)間:2024年04月27日 11:32:25   作者:李少兄  
這篇文章主要給大家介紹了關(guān)于JSON.toJSONString()方法在Java中的使用方法及應(yīng)用場(chǎng)景,JSON.toJSONString是將對(duì)象轉(zhuǎn)化為Json字符串,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在Java開(kāi)發(fā)中,JSON(JavaScript Object Notation)作為一種輕量級(jí)的數(shù)據(jù)交換格式被廣泛應(yīng)用于前后端交互以及數(shù)據(jù)存儲(chǔ)場(chǎng)景。阿里巴巴開(kāi)源的fastjson庫(kù)提供了一個(gè)簡(jiǎn)單易用且高效的JSON處理方式,其中com.alibaba.fastjson.JSON.toJSONString()方法用于將Java對(duì)象轉(zhuǎn)換為JSON字符串,本文將詳細(xì)解讀其用法及應(yīng)用場(chǎng)景。

一、引入依賴

首先,確保你的項(xiàng)目已經(jīng)引入了Fastjson庫(kù),Maven配置如下:

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

二、JSON.toJSONString()方法詳解

JSON.toJSONString()方法的主要功能是將Java對(duì)象轉(zhuǎn)換成JSON字符串格式。基本語(yǔ)法如下:

import com.alibaba.fastjson.JSON;

// 假設(shè)有一個(gè)User對(duì)象
public class User {
    private String name;
    private int age;

    // 省略getter和setter方法...
}

// 創(chuàng)建一個(gè)User對(duì)象實(shí)例
User user = new User();
user.setName("Tom");
user.setAge(25);

// 使用JSON.toJSONString()方法轉(zhuǎn)換為JSON字符串
String jsonString = JSON.toJSONString(user);

上述代碼執(zhí)行后,jsonString變量將保存如下的JSON字符串:

{
    "name": "Tom",
    "age": 25
}

此方法支持序列化大部分Java類型,包括基礎(chǔ)類型、集合、數(shù)組、Map以及自定義對(duì)象等。

三、高級(jí)用法

  • 序列化時(shí)排除某些字段

    如果不想將對(duì)象的某個(gè)屬性轉(zhuǎn)化為JSON字符串,可以通過(guò)@JSONField(serialize=false)注解來(lái)標(biāo)記。

    public class User {
        @JSONField(serialize=false)
        private String password; // 不序列化密碼字段
        
        // 其他字段和方法...
    }
    
  • 日期格式化

    默認(rèn)情況下,fastjson會(huì)將Java.util.Date對(duì)象轉(zhuǎn)為時(shí)間戳。如果你需要特定的日期格式,可以在調(diào)用toJSONString()方法時(shí)傳入SerializerFeature.WriteDateUseDateFormat參數(shù),并設(shè)置全局日期格式。

    FastJsonConfig config = new FastJsonConfig();
    config.setDateFormat("yyyy-MM-dd HH:mm:ss");
    
    String jsonString = JSON.toJSONString(user, config.getFeatures());
    
  • 防止XSS攻擊

    fastjson提供了一個(gè)特性可以自動(dòng)過(guò)濾HTML標(biāo)簽,防止XSS攻擊,通過(guò)SerializerFeature.HtmlEscape參數(shù)開(kāi)啟。

    List<SerializerFeature> features = new ArrayList<>();
    features.add(SerializerFeature.HtmlEscape);
    
    String jsonString = JSON.toJSONString(user, features.toArray(new SerializerFeature[0]));
    

結(jié)語(yǔ)

JSON.toJSONString()方法是Java開(kāi)發(fā)中進(jìn)行JSON序列化的常用手段,借助fastjson庫(kù)提供的豐富功能,我們可以輕松地處理各種復(fù)雜對(duì)象到JSON字符串的轉(zhuǎn)換,從而滿足前后端數(shù)據(jù)交互的需求。同時(shí),注意在實(shí)際開(kāi)發(fā)過(guò)程中根據(jù)業(yè)務(wù)需求選擇合適的序列化策略,保證數(shù)據(jù)安全性和有效性。

補(bǔ)充:JSON.toJSONString()空字段不忽略修改

使用JSON.toJSONString(object)方法,返回的json中,null對(duì)應(yīng)的key已經(jīng)被過(guò)濾掉,這是因?yàn)槟J(rèn)會(huì)將為空的字段自動(dòng)忽略,這明顯不是我們想要的結(jié)果。 去掉JSON.toJSONString()空字段忽略方法兩個(gè)如下

  • 方法一

SerializerFeature序列化屬性

String s = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);

QuoteFieldNames———-輸出key時(shí)是否使用雙引號(hào),默認(rèn)為true

WriteMapNullValue——–是否輸出值為null的字段,默認(rèn)為false

WriteNullNumberAsZero—-數(shù)值字段如果為null,輸出為0,而非null

WriteNullListAsEmpty—–List字段如果為null,輸出為[],而非null

WriteNullStringAsEmpty—字符類型字段如果為null,輸出為”“,而非null

WriteNullBooleanAsFalse–Boolean字段如果為null,輸出為false,而非nul

  • 方法二

加上這個(gè)過(guò)濾器后,所有的null和"“串都會(huì)被轉(zhuǎn)換成”"值輸出到字符串中

    private static ValueFilter valueFilter = (o, s, o1) -> o1 == null ? "" : o1;

    public static void main(String[] args) {
        User user = new User();
        String s = JSON.toJSONString(user, valueFilter);
        System.out.println(s);
    }
  • 測(cè)試代碼如下
    private static ValueFilter valueFilter = (o, s, o1) -> o1 == null ? "" : o1;

    public static void main(String[] args) {
        User user = new User();
        String s1 = JSON.toJSONString(user);
        System.out.println(s1);
        String s2 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
        System.out.println(s2);
        String s3 = JSON.toJSONString(user, valueFilter);
        System.out.println(s3);

    }
  • 測(cè)試結(jié)果如下

總結(jié)

到此這篇關(guān)于JSON.toJSONString()方法在Java中的使用方法及應(yīng)用場(chǎng)景的文章就介紹到這了,更多相關(guān)Java中JSON.toJSONString()方法使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中List數(shù)據(jù)去重的3種有效方法總結(jié)

    Java中List數(shù)據(jù)去重的3種有效方法總結(jié)

    在Java編程中,List集合是一種常用的數(shù)據(jù)結(jié)構(gòu),它允許我們存儲(chǔ)和操作一組有序的對(duì)象,這篇文章主要介紹了Java中List數(shù)據(jù)去重的3種有效方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02
  • 實(shí)例講解Java的設(shè)計(jì)模式編程中責(zé)任鏈模式的運(yùn)用

    實(shí)例講解Java的設(shè)計(jì)模式編程中責(zé)任鏈模式的運(yùn)用

    這篇文章主要介紹了Java的設(shè)計(jì)模式編程中責(zé)任鏈模式的運(yùn)用,講解了通過(guò)條件判斷結(jié)構(gòu)來(lái)分配不同對(duì)象的責(zé)任權(quán)限,需要的朋友可以參考下
    2016-02-02
  • java連接數(shù)據(jù)庫(kù)(代碼分享)

    java連接數(shù)據(jù)庫(kù)(代碼分享)

    本文主要介紹了java連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法代碼。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • Java ConcurrentHashMap鎖分段機(jī)制使用及代碼實(shí)例

    Java ConcurrentHashMap鎖分段機(jī)制使用及代碼實(shí)例

    ConcurrentHashMap是Java中的一種線程安全的哈希表,通過(guò)鎖分段機(jī)制提高了并發(fā)性能,在Java 8中,ConcurrentHashMap引入了CAS操作和更復(fù)雜的節(jié)點(diǎn)繼承結(jié)構(gòu),進(jìn)一步優(yōu)化了并發(fā)操作
    2025-01-01
  • 聊聊SpringBoot中組件無(wú)法被注入的問(wèn)題

    聊聊SpringBoot中組件無(wú)法被注入的問(wèn)題

    這篇文章主要介紹了SpringBoot中組件無(wú)法被注入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Maven解決jar包版本沖突的4種方法詳解

    Maven解決jar包版本沖突的4種方法詳解

    這篇文章主要給大家介紹了關(guān)于Maven解決jar包版本沖突的4種方法代碼,maven工程要導(dǎo)入jar包的坐標(biāo),就必須要考慮解決jar包沖突,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 使用MyBatis 動(dòng)態(tài)update數(shù)據(jù)

    使用MyBatis 動(dòng)態(tài)update數(shù)據(jù)

    使用mybatis寫sql,需要?jiǎng)討B(tài)更新對(duì)象數(shù)據(jù),每次需要更新的字段不同,為了防止null空異常,就需要用動(dòng)態(tài)sql了,下面給大家分享一段代碼關(guān)于mybatis動(dòng)態(tài)update,需要的朋友參考下
    2016-11-11
  • 詳解解決IDEA2020.1版本的lombok插件問(wèn)題

    詳解解決IDEA2020.1版本的lombok插件問(wèn)題

    這篇文章主要介紹了詳解解決IDEA2020.1版本的lombok插件問(wèn)題。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Springboot異步事件配置和使用示例詳解

    Springboot異步事件配置和使用示例詳解

    Spring框架提供了一套事件處理機(jī)制,允許應(yīng)用在各個(gè)組件之間傳遞狀態(tài)信息,自定義事件通常繼承自ApplicationEvent類,Springboot通過(guò)自動(dòng)配置簡(jiǎn)化了異步處理的配置,實(shí)現(xiàn)開(kāi)箱即用,Spring事件模型核心是觀察者模式,適用于解耦和提高響應(yīng)速度
    2024-10-10
  • java顯示當(dāng)前的系統(tǒng)時(shí)間

    java顯示當(dāng)前的系統(tǒng)時(shí)間

    這篇文章主要介紹了java如何顯示當(dāng)前的系統(tǒng)時(shí)間,代碼很簡(jiǎn)單,自己可以自定義顯示的系統(tǒng)時(shí)間的顏色和字體,需要的朋友可以參考下
    2015-10-10

最新評(píng)論

石首市| 禄丰县| 阜新市| 溧阳市| 大足县| 东至县| 大冶市| 石嘴山市| 阆中市| 孙吴县| 肇州县| 文登市| 永胜县| 靖远县| 苏尼特右旗| 黎平县| 三明市| 浦江县| 新营市| 台东市| 庆云县| 通许县| 遂川县| 太和县| 长顺县| 惠安县| 柞水县| 阿鲁科尔沁旗| 永泰县| 赣州市| 珲春市| 文安县| 同心县| 安龙县| 河西区| 新龙县| 宕昌县| 道孚县| 称多县| 定远县| 漳州市|