溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VO對象中byte[]數(shù)組怎么用JSON轉換

發(fā)布時間:2021-06-22 14:29:33 來源:億速云 閱讀:251 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“VO對象中byte[]數(shù)組怎么用JSON轉換”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“VO對象中byte[]數(shù)組怎么用JSON轉換”吧!

如果VO對象中有byte[]數(shù)組如何處理?jason轉換的時候,給前端暴露出來的byte[]會轉換成String

但是前端發(fā)送的請求中,String轉換為byte[]可能會拋出異常:

    com.fasterxml.jackson.core.JsonParseException: Failed to decode VALUE_STRING as base64 (MIME-NO-LINEFEEDS): Illegal character '"' (code 0x22) in base64 content
     at [Source: java.io.PushbackInputStream@1d21ffcf; line: 4, column: 20]

這個時候可以自定義序列化和反序列化方法來處理,具體代碼如下:

VO類:OrderVO

    import java.util.Date;
    
    import org.springframework.format.annotation.DateTimeFormat;
    
    import com.fasterxml.jackson.annotation.JsonFormat;
    import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
    import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    
    /**
     * 
     * OrderVO. 訂單模型
     * 
     */
    @Data
    @ApiModel("訂單模型")
    public class OrderVO {
    
    	/**
    	 * 訂單ID
    	 */
    	@ApiModelProperty("訂單ID")
    	private Long Id;
    
    	/**
    	 * 訂單Code
    	 */
    	@ApiModelProperty("訂單Code")
    	private String code;
    
    	/**
    	 * 訂單名稱
    	 */
    	@ApiModelProperty("訂單名稱")
    	private String name;
    
    	/**
    	 * 訂單狀態(tài)
    	 */
    	@ApiModelProperty("訂單狀態(tài)")
    	private Integer status;
    
    	/**
    	 * 商品code
    	 */
    	@ApiModelProperty(name = "商品Code")
    	private String productCode;
    
    	/**
    	 * 創(chuàng)建時間
    	 */
    	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    	@ApiModelProperty(name = "創(chuàng)建時間", readOnly = true)
    	private Date createdDate;
    
    	/**
    	 * 用戶名稱
    	 */
    	@ApiModelProperty("用戶名稱")
    	private String username;
    
    	/**
    	 * remark
    	 */
    	@ApiModelProperty("remark")
    	private String remark;
    
    	/**
    	 * other, just a demo field
    	 */
    	@ApiModelProperty("other")
    	@JsonSerialize(using = MyByteSerialize.class)
    	@JsonDeserialize(using = MyByteDeSerializer.class)
    	private byte[] other;
    }

反序列化類:MyByteDeSerializer

    import java.io.IOException;
    
    import org.apache.commons.lang.StringUtils;
    
    import com.fasterxml.jackson.core.JsonParser;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.DeserializationContext;
    import com.fasterxml.jackson.databind.JsonDeserializer;
    
    public class MyByteDeSerializer extends JsonDeserializer<byte[]> {
    
    	@Override
    	public byte[] deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
    
    		String stringValue = p.getText();
    		if (StringUtils.isEmpty(stringValue)) {
    			return null;
    		}
    		
    		return stringValue.getBytes();
    	}
    
    }

序列化類:MyByteSerialize

    import java.io.IOException;
    import java.nio.charset.Charset;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    public class MyByteSerialize extends JsonSerializer<byte[]> {
    
    	@Override
    	public void serialize(byte[] value, JsonGenerator gen, SerializerProvider serializers)
    			throws IOException, JsonProcessingException {
    		
    		if (null == value || 0 == value.length) {
    			gen.writeString("");
    		}
    		
    		gen.writeString(new String(value, Charset.defaultCharset()));
    	}
    
    }

這樣就可以方法的處理byte[]類型的json轉換了。

感謝各位的閱讀,以上就是“VO對象中byte[]數(shù)組怎么用JSON轉換”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對VO對象中byte[]數(shù)組怎么用JSON轉換這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI