您好,登錄后才能下訂單哦!
這篇文章主要講解了“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轉換這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。