刘光辉
3 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package jnpf.limsService.provider;
 
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Date;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
 
/** The explicit dataType carries semantics; decimal text survives JavaScript and untyped JSON clients. */
public class LimsElnSourceScalarSerializer extends JsonSerializer<Object> {
    @Override
    public void serialize(Object value, JsonGenerator output, SerializerProvider provider) throws IOException {
        if (value instanceof Boolean) output.writeBoolean((Boolean) value);
        else if (value instanceof BigDecimal) output.writeString(((BigDecimal) value).toPlainString());
        else if (value instanceof BigInteger || value instanceof Byte || value instanceof Short
                || value instanceof Integer || value instanceof Long || value instanceof String
                || value instanceof LocalDate || value instanceof LocalDateTime
                || value instanceof OffsetDateTime || value instanceof Instant) output.writeString(value.toString());
        else if (value instanceof Date) output.writeString(((Date) value).toLocalDate().toString());
        else if (value instanceof Timestamp) output.writeString(((Timestamp) value).toLocalDateTime().toString());
        else provider.reportMappingProblem("Unsupported source scalar type");
    }
}