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

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

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

前言

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

一、引入依賴

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

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

二、JSON.toJSONString()方法詳解

JSON.toJSONString()方法的主要功能是將Java對象轉(zhuǎn)換成JSON字符串格式?;菊Z法如下:

import com.alibaba.fastjson.JSON;

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

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

// 創(chuàng)建一個User對象實(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以及自定義對象等。

三、高級用法

  • 序列化時排除某些字段

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

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

    默認(rèn)情況下,fastjson會將Java.util.Date對象轉(zhuǎn)為時間戳。如果你需要特定的日期格式,可以在調(diào)用toJSONString()方法時傳入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提供了一個特性可以自動過濾HTML標(biāo)簽,防止XSS攻擊,通過SerializerFeature.HtmlEscape參數(shù)開啟。

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

結(jié)語

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

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

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

  • 方法一

SerializerFeature序列化屬性

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

QuoteFieldNames———-輸出key時是否使用雙引號,默認(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

  • 方法二

加上這個過濾器后,所有的null和"“串都會被轉(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);
    }
  • 測試代碼如下
    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);

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

總結(jié)

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

相關(guān)文章

  • Java超細(xì)致講解數(shù)組的使用

    Java超細(xì)致講解數(shù)組的使用

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-05-05
  • 詳解Java線程池是如何重復(fù)利用空閑線程的

    詳解Java線程池是如何重復(fù)利用空閑線程的

    在Java開發(fā)中,經(jīng)常需要創(chuàng)建線程去執(zhí)行一些任務(wù),實(shí)現(xiàn)起來也非常方便,此時,我們很自然會想到使用線程池來解決這個問題,文中給大家提到使用線程池的好處,對Java線程池空閑線程知識感興趣的朋友一起看看吧
    2021-06-06
  • 關(guān)于自定義過濾器獲取不到session問題

    關(guān)于自定義過濾器獲取不到session問題

    這篇文章主要介紹了關(guān)于自定義過濾器獲取不到session問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java并發(fā)編程之阻塞隊(duì)列(BlockingQueue)詳解

    Java并發(fā)編程之阻塞隊(duì)列(BlockingQueue)詳解

    這篇文章主要介紹了詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理,阻塞隊(duì)列是Java util.concurrent包下重要的數(shù)據(jù)結(jié)構(gòu),有興趣的可以了解一下
    2021-09-09
  • 使用Hutool編寫生成隨機(jī)數(shù)的工具類

    使用Hutool編寫生成隨機(jī)數(shù)的工具類

    Hutool?是一個?Java?工具類庫,提供了豐富的工具方法,其中?RandomUtil?是?Hutool?中用于生成隨機(jī)數(shù)的工具類,下面我們來看看它的具體使用吧
    2025-02-02
  • SpringMVC Json自定義序列化和反序列化的操作方法

    SpringMVC Json自定義序列化和反序列化的操作方法

    這篇文章主要介紹了SpringMVC Json自定義序列化和反序列化的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Java兩個List<T> 求交集,差集,并集,去重后的并集

    Java兩個List<T> 求交集,差集,并集,去重后的并集

    本文主要介紹了Java兩個List<T> 求交集,差集,并集,去重后的并集,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • SpringBoot實(shí)現(xiàn)MapperScan添加動態(tài)配置(占位符)

    SpringBoot實(shí)現(xiàn)MapperScan添加動態(tài)配置(占位符)

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)MapperScan添加動態(tài)配置(占位符),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • SpringBoot?整合Thymeleaf教程及使用方法

    SpringBoot?整合Thymeleaf教程及使用方法

    Thymeleaf?是一款用于渲染?XML/XHTML/HTML5?內(nèi)容的模板引擎,它與?JSP,Velocity,FreeMaker?等模板引擎類似,也可以輕易地與?Spring?MVC?等?Web?框架集成,這篇文章主要介紹了SpringBoot?整合Thymeleaf教程及使用,需要的朋友可以參考下
    2023-11-11
  • Java線程池中的工作線程Worker類源碼解析

    Java線程池中的工作線程Worker類源碼解析

    這篇文章主要介紹了Java線程池中的工作線程Worker類源碼解析,線程池中的工作線程是通過內(nèi)部類Worker表示的,Worker繼承自AbstractQueueSynchronizer,可以實(shí)現(xiàn)同步器的功能,需要的朋友可以參考下
    2023-12-12

最新評論