Long型別id 返回頁面精度丟失問題解決
阿新 • • 發佈:2020-12-22
技術標籤:java工具類
1.引入以下兩個工具類
package cn.piesat.common.utils; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; /** * Long 型別欄位序列化時轉為字串,避免js丟失精度 * */ public class LongJsonSerializer extends JsonSerializer<Long> { @Override public void serialize(Long value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { String text = (value == null ? null : String.valueOf(value)); if (text != null) { jsonGenerator.writeString(text); } } }
package cn.piesat.common.utils; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; /** * 將字串轉為Long * */ public class LongJsonDeserializer extends JsonDeserializer<Long> { private static final Logger logger = LoggerFactory.getLogger(LongJsonDeserializer.class); @Override public Long deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { String value = jsonParser.getText(); try { return value == null ? null : Long.parseLong(value); } catch (NumberFormatException e) { logger.error("解析長整形錯誤", e); return null; } } }
2.在實體類id欄位上新增@JsonSerialize(using = LongJsonSerializer.class)和@JsonDeserialize(using = LongJsonDeserializer.class)註解
@Data @NoArgsConstructor @AllArgsConstructor @Builder public class FileVerifyOpinionDto { /** id 解決返回到前端精度缺失*/ @JsonSerialize(using = LongJsonSerializer.class) @JsonDeserialize(using = LongJsonDeserializer.class) private Long id; /** 檔案 file_base_info id */ private Long fileId; }
3。