国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

實(shí)體類中嵌套Enum類型并想轉(zhuǎn)換成JSON字符串時(shí)遇到的問(wèn)題。

這篇具有很好參考價(jià)值的文章主要介紹了實(shí)體類中嵌套Enum類型并想轉(zhuǎn)換成JSON字符串時(shí)遇到的問(wèn)題。。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

實(shí)體類中嵌套Enum類型并想轉(zhuǎn)換成JSON字符串時(shí)遇到的問(wèn)題。

先說(shuō)明問(wèn)題的產(chǎn)生,在自己寫(xiě)著玩的時(shí)候,新建了一個(gè)User類如下:

package com.ma.xdo;
import lombok.*;

import java.io.Serializable;

/**
 * @ClassName User
 * @Description TODO
 * @Author @O_o
 * @Date 2023/6/8 14:24
 * @Version 1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User implements Serializable {
    private String name;
    private Integer age;
    private SexEnum sex;
}

不難看出User類中,用到了枚舉類把性別規(guī)定成了兩個(gè)。

下面是SexEnum類:

public enum SexEnum {
    MALE(1, "男"),
    FEMALE(2, "女");

    private Integer sex;
    private String sexName;

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getSexName() {
        return sexName;
    }

    public void setSexName(String sexName) {
        this.sexName = sexName;
    }

    SexEnum(Integer sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }
}

這里,當(dāng)我想通過(guò)工具類將其轉(zhuǎn)換成json字符串并且讓枚舉中的 值能返回對(duì)應(yīng)的文字時(shí),出現(xiàn)了問(wèn)題。返回的值是枚舉類的 屬性名 而不是對(duì)應(yīng)的值

{"age":19,"name":"李四","sex":"MALE"}

(寫(xiě)到這里,我也不知道是否在企業(yè)開(kāi)發(fā)中有這種需求。但是就當(dāng)學(xué)習(xí)了一種工具的使用方法了)

于是,通過(guò)資料的查詢,當(dāng)前使用的環(huán)境是fastJson,fastJson提供了自定義序列化的接口ObjectSerializer,實(shí)現(xiàn)這個(gè)接口, 需要重寫(xiě)其提供的一個(gè)方法

public class SexEnumSerializer implements ObjectSerializer {
    @Override
    public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
		// TODO 這里固定要自定義的轉(zhuǎn)換類型就好
    }
}

由于這個(gè)接口是一個(gè)函數(shù)式接口,于是我干脆用到了lambda表達(dá)式 實(shí)現(xiàn)流程如下

//聲明出一個(gè)配置對(duì)象
SerializeConfig config = new SerializeConfig();
//把自定義的序列化方式,當(dāng)接到的這個(gè)值 包含 sexEnum這個(gè)類型屬性的時(shí)候  會(huì)替換其sex中的對(duì)應(yīng)值
config.put(SexEnum.class, (JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i)->{
    if (o instanceof SexEnum) {
        SexEnum sexEnum = (SexEnum) o;
        jsonSerializer.write(sexEnum.getSexName());
    } else {
        jsonSerializer.write(o);
    }
});
String json = JSON.toJSONString(user, config);

由此 解決了此次遇到的問(wèn)題。成功輸出文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-476006.html

{"age":19,"name":"李四","sex":"男"}

到了這里,關(guān)于實(shí)體類中嵌套Enum類型并想轉(zhuǎn)換成JSON字符串時(shí)遇到的問(wèn)題。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【mybatis-plus實(shí)體類復(fù)雜對(duì)象字段json自動(dòng)相互轉(zhuǎn)換,以及自定義字段類型解析器】

    引言: mybatis-plus集合對(duì)象字段json如何自動(dòng)進(jìn)行相互的轉(zhuǎn)換? 怎樣在使用mybatis-plus操作數(shù)據(jù)表的時(shí)候自動(dòng)對(duì)實(shí)體類屬性進(jìn)行自動(dòng)解析? 我們平時(shí)在做開(kāi)發(fā)的時(shí)候,會(huì)遇到一個(gè)字段保存json串的情況。一般情況下mybatis-plus在做插入/更新之前將對(duì)象手動(dòng)轉(zhuǎn)換成json串,查詢要用的時(shí)

    2023年04月13日
    瀏覽(17)
  • Java-json相關(guān)轉(zhuǎn)換,JSONObject與實(shí)體類/map互轉(zhuǎn)、List/List<map>和JSONArray互轉(zhuǎn)、獲取JSONObject中的key value、字符串String轉(zhuǎn)換等

    博客背景是Java開(kāi)發(fā)。json相關(guān)的轉(zhuǎn)換、取值等在日常開(kāi)發(fā)中經(jīng)常使用,但有時(shí)候還是會(huì)忘記or遇到些奇奇怪怪的問(wèn)題。以此記錄,提醒自己~不定期更新~ 實(shí)體類和JSONObject互轉(zhuǎn) Map和JSONObject互轉(zhuǎn) String轉(zhuǎn)JSONObject 實(shí)體類轉(zhuǎn)JSON字符串時(shí)不過(guò)濾NULL空值 獲取JSONObject中的key value List和

    2024年02月12日
    瀏覽(29)
  • 【Java】HttpServlet類中前后端交互三種方式(query string、form表單、JSON字符串)

    【Java】HttpServlet類中前后端交互三種方式(query string、form表單、JSON字符串)

    在前后端的交互中,前端通過(guò)以下三種方式來(lái)與后端進(jìn)行交互?? ?query string ?form表單 ?JSON字符串 下面我們將書(shū)寫(xiě)這三種方式的后端代碼并進(jìn)行講解 QueryString即在url中寫(xiě)入鍵值對(duì),一般用doGet方法進(jìn)行交互 代碼如下? 用postman驗(yàn)證 ? ?form表單一般用doPost方法進(jìn)行交互 Jason是

    2024年01月19日
    瀏覽(23)
  • java解析多層嵌套json字符串

    在java 程序中,經(jīng)常會(huì)涉及到各種變量值提取的問(wèn)題,下面給出簡(jiǎn)單的示例及說(shuō)明: JSON實(shí)際上也是鍵值對(duì)(\\\"key\\\":\\\"value\\\"),key 必須是字符串,value 可以是合法的 JSON 數(shù)據(jù)類型(字符串, 數(shù)字, 對(duì)象, 數(shù)組, 布爾值或 null) value如果是字符串,用jsonobj.getString(\\\"key\\\")獲取 value如果是數(shù)

    2024年02月15日
    瀏覽(26)
  • Java實(shí)體和JSON之間的相互轉(zhuǎn)換

    Java實(shí)體和JSON之間的相互轉(zhuǎn)換

    代碼如下: 初始化并輸出一下: 注意,如果沒(méi)有使用“@Data”注解,一定要加上get和set方法,不然轉(zhuǎn)化之后的Json是空的! 主要是對(duì)SerializerFeature枚舉類的使用,詳細(xì)的可以看這個(gè)博客: https://blog.csdn.net/xiang__liu/article/details/81570923 或者看這里: https://www.javadoc.io/static/com.ali

    2024年02月12日
    瀏覽(30)
  • postMan傳String和類實(shí)體JSON類型

    postMan傳String和類實(shí)體JSON類型

    ?postMan傳String和類實(shí)體JSON類型 其中類: ?postMan調(diào)用方式: 下面的JSON是通過(guò):JSONObject.toJSONString(類)得到的:? Json通過(guò)String傳遞時(shí):? ? 通過(guò):用 %7b 代替{? ? ?,用 %7d 代替 } ? ?

    2024年02月11日
    瀏覽(22)
  • 解決Data too long for column ‘xxx‘ at row 1問(wèn)題以及深入理解mysql的字符串?dāng)?shù)據(jù)類型(char,varchar,enum,text,longtext...)

    今天在測(cè)試環(huán)境新增數(shù)據(jù)時(shí),報(bào)出如是錯(cuò)誤: Data too long for column \\\'apply_service_type\\\' at row 1 。 為了復(fù)現(xiàn)這個(gè)問(wèn)題,我特地在本地?cái)?shù)據(jù)庫(kù)中增加如下 test 表:

    2023年04月17日
    瀏覽(26)
  • .Net 中實(shí)體類轉(zhuǎn)換為XML字符串, 確保字符串頭部是utf-8 不是utf-16

    使用 Utf8StringWriter 或類似的方法來(lái)確保在序列化過(guò)程中使用正確的編碼。然而, Utf8StringWriter 不是.NET Core或.NET Standard庫(kù)的一部分,因此你需要自己實(shí)現(xiàn)一個(gè)。 不過(guò),有一種更簡(jiǎn)單的方法可以達(dá)到相同的效果,那就是使用 StringWriter 與 Encoding.GetEncoding(\\\"utf-8\\\") 結(jié)合,但這實(shí)際上

    2024年01月23日
    瀏覽(31)
  • 【Java alibaba&hutool】JSON、Map、實(shí)體對(duì)象間的相互轉(zhuǎn)換

    【Java alibaba&hutool】JSON、Map、實(shí)體對(duì)象間的相互轉(zhuǎn)換

    ??????? 首先要知道三者的互轉(zhuǎn)關(guān)系,可以先將JSON理解成是String類型。這篇博文主要是記錄阿里巴巴的JSONObject的兩個(gè)方法。toJSONString()以及parseObject()方法。順便鞏固Map與實(shí)體對(duì)象的轉(zhuǎn)換技巧。 ??????? 綜上:這里所學(xué)得知識(shí)使用fastjson是實(shí)現(xiàn)Map -- JSON - Bean。其余由糊涂

    2024年02月07日
    瀏覽(23)
  • JSON轉(zhuǎn)換:實(shí)體類和JSONObject互轉(zhuǎn),List和JSONArray互轉(zhuǎn)(fastjson版)

    ?? ? //1.java對(duì)象轉(zhuǎn)化成String ???? String s=JSONObject.toJSONString(javaObject.class); ????? //2. java對(duì)象轉(zhuǎn)化成Object ??????? Object str=JSONObject.toJSON(javaObject.class); ????? //3.String類型轉(zhuǎn)json對(duì)象 ?????? JSONObject jsonObject= JSONObject.parseObject(str); ????? //4. String轉(zhuǎn)Object ??????? Obj

    2024年02月14日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包