首页 > Web开发 > 详细

SrpingMVC通过JSON注入from数据到实体自定义(LocalDateTime,LocalDate,Boolean类型)字段的序列化、反序列化方法

时间:2019-05-30 11:42:03      阅读:161      评论:0      收藏:0      [点我收藏+]

前端代码

<script type="text/javascript" src="${ctx}/js/jquery.serializejson.min.js"></script>
<script>
 var data = {};
 data = $("#form1").serializeJSON();
 var issueProcess = [];

$("#sjcljl .list").each(function(index,item) {
    var step = index+1;
    var record ={};
    record.id = replaceNull($(item).find(‘input[id="issueProcessId‘+step+‘"]‘).val());
    record.f_clsm = replaceNull($(item).find(‘textarea[id="f_clsm‘+step+‘"]‘).val());
    record.f_fk = replaceNull($(item).find(‘select[id="f_fk‘+step+‘"]‘).val());
    record.f_clkssj = replaceNull($(item).find(‘input[id="f_clkssj‘+step+‘"]‘).val());
    record.f_cljssj = replaceNull($(item).find(‘input[id="f_cljssj‘+step+‘"]‘).val());
    record.f_clryid = replaceNull($(item).find(‘input[id="f_clry1‘+step+‘"]‘).attr("f_clryid1"+step));

    //至少填写开始、结束时间
    if(!(isNull(record.f_clkssj)|| isNull(record.f_cljssj) ||isNull(record.f_clryid))) {
        issueProcess.push(record);
    }
});

data.issueProcess = issueProcess;


 $.ajax({
    type: "POST",
    url: "/itss/issue/save",
    dataType: ‘json‘,
    contentType : ‘application/json;charset=utf-8‘,
    data: JSON.stringify(data),
    success: function (resp) {
        //处理代码
    }, error: function (err) {        
        layer.alert(err.responseText, {
            offset: ‘200px‘,
        });
    }
});


function replaceNull(val){
    if(val==undefined || val==null || val=="" || val==‘‘ || val==‘null‘ || val==‘-1‘ ||val.length<parseInt(1)){
        return null;
    }else{
        return val;
    }
}
</script>

后端代码

    /***
     * 问题保存
     * @param model
     * @return
     */
    @RequestMapping(value = "/save", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public ReturnParam save(@RequestBody UserIssueDto model) {

        ReturnParam rp = new ReturnParam();

        Integer id = model.getId();

        if (id>0) {

            ///....

        } else {

            ///....
        }

       
        return rp;
    }
    
    
    public class ReturnParam {
    
    private Object result;
    
    private String desc;
    
    private String status;
    
    private String wybs;
    
    
    public String getWybs() {
        return wybs;
    }

    public void setWybs(String wybs) {
        this.wybs = wybs;
    }

    public Object getResult() {
        return result;
    }

    public void setResult(Object result) {
        this.result = result;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
    
}


public class UserIssueDto implements Serializable
{
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonSerialize(using= JsonLocalDateTimeSerializer.class)
    @JsonDeserialize(using= JsonLocalDateTimeDeserializer.class)
    private LocalDateTime f_sqsj;  //申请时间
    
    
     @JsonSerialize(using= JsonBooleanSerializer.class)
    @JsonDeserialize(using= JsonBooleanDeserializer.class)
    private Boolean f_wtscyj;   //问题审查意见  false不同意 true同意
    
    
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonSerialize(using= JsonLocalDateSerializer.class)
    @JsonDeserialize(using= JsonLocalDateDeserializer.class)
    private LocalDate f_wxdkhqzrq;// 维修单客户签字日期
    
    //...
    
}

 

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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class JsonBooleanDeserializer extends JsonDeserializer<Boolean> {

    /***
     * 兼容sql92 bit数据类型 0(false) 1(true)
     * @param parser
     * @param ctxt
     * @return
     * @throws IOException
     * @throws JsonProcessingException
     */
    @Override
    public Boolean deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
        String value = parser.getText();
        if(StringUtils.isBlank(value))
        {
            return null;
        }

        if(Boolean.valueOf(StringUtils.equals("1",value)))
        {
            return Boolean.TRUE;
        }

        if(Boolean.valueOf(StringUtils.equals("0",value)))
        {
            return Boolean.FALSE;
        }

        //getBoolean有异常可以抛出
        return Boolean.getBoolean(value);
    }
}
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class JsonBooleanSerializer extends JsonSerializer<Boolean> {

    @Override
    public void serialize(Boolean value, JsonGenerator gen, SerializerProvider serializers) throws IOException{

        if(null == value)
        {
            gen.writeString((String)null);
        }
        gen.writeBoolean(Boolean.TRUE.equals(value));
    }
}
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/***
 * 兼容jsr310的LocalDate JSON反序列化类
 */
@Component
public class JsonLocalDateDeserializer extends JsonDeserializer<LocalDate> {

    @Override
    public LocalDate deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException{
        String szLocalDate = parser.getText();
        if(StringUtils.isBlank(szLocalDate)) {
            System.err.println("invalid date supplied for conversion,ignored.");
            return null;
        }
        return LocalDate.parse(parser.getText(), DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.of("GMT+8")));
    }
}
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/***
 * 兼容jsr310的LocalDate JSON序列化类
 */
@Component
public class JsonLocalDateSerializer extends JsonSerializer<LocalDate> {

    @Override
    public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException{

        if(value == null)
        {
            System.err.println("invalid date supplied for conversion,ignored.");
            return;
        }
        String formattedDate = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.of("GMT+8")).format(value);
        gen.writeString(formattedDate);
    }
}
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/***
 * 兼容jsr310的LocalDateTime JSON反序列化类
 */
@Component
public class JsonLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {

    @Override
    public LocalDateTime deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException{

        String szLocalDateTime = parser.getText();

        if(StringUtils.isBlank(szLocalDateTime)) {
            System.err.println("invalid date supplied for conversion,ignored.");
            return null;
        }
        return LocalDateTime.parse(parser.getText(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("GMT+8")));
    }
}
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/***
 * 兼容jsr310的LocalDateTime JSON序列化类
 */
@Component
public class JsonLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {

    @Override
    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException{

        if(value ==null)
        {
            System.err.println("invalid date supplied for conversion,ignored.");
            return;
        }
        String formattedDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("GMT+8")).format(value);
        gen.writeString(formattedDate);
    }
}

相关依赖及版本:

commons-lang3-3.3.2.jar

fastjson-1.2.12.jar

jackson-datatype-jsr310-2.9.8.jar

spring 4.2.7

SrpingMVC通过JSON注入from数据到实体自定义(LocalDateTime,LocalDate,Boolean类型)字段的序列化、反序列化方法

原文:https://www.cnblogs.com/passedbylove/p/10948519.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!