Android端GSON解析后台带有Date的List 的数据以及后台如何交互

       与后台交互返回的code为200则成功返回数据,重要的是如何解析Json的List数据,我后台用的是SSM,其json很友好,除了Date类型以外,先贴上新手一路学习而来的代码吧,网上很多自定义转型的,其实不用那么复杂,一行代码就搞定了对Date的转型

//附上包,大佬跳过,小白不懂留言啦
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

//现在类下定义好ArrayList<>()
 private List<RunreleaseCustom> runreleaseCustomList = new ArrayList<>();


//以下为在网络交互返回功下写的

 Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
//解析List 
 runreleaseCustomList = gson.fromJson(json, new TypeToken<List<RunreleaseCustom>>() {
                }.getType());

后台SSM框架的注解@RequestBody对Date类型不支持转型,新版本或许支持吧!不持支的可以看下,.需要对Date进行序列化与反序列化

DateJsonSerializer .java

package JsonTest;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;

public class DateJsonSerializer extends JsonSerializer<Date> {  
	  
    /** 
     * @see com.fasterxml.jackson.databind.JsonSerializer#serialize(java.lang.Object, 
     *      com.fasterxml.jackson.core.JsonGenerator, 
     *      com.fasterxml.jackson.databind.SerializerProvider) 
     */  
    @Override  
    public void serialize(Date date, JsonGenerator generator, SerializerProvider provider)  
            throws IOException, JsonProcessingException {  
        ObjectMapper om = new ObjectMapper();  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        om.writeValue(generator, sdf.format(date));  
    }  
  
}

 DateJsonDeserializer.java

package JsonTest;

import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;



public class DateJsonDeserializer extends JsonDeserializer<Date> {  
	  
    /** 
     * @see com.fasterxml.jackson.databind.JsonDeserializer#deserialize(com.fasterxml.jackson.core.JsonParser, 
     *      com.fasterxml.jackson.databind.DeserializationContext) 
     */  
    @Override  
    public Date deserialize(JsonParser parser, DeserializationContext context)  
            throws IOException, JsonProcessingException {  
        try {  
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            return sdf.parse(parser.getValueAsString());  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  
  
} 

然后只需要在你的POJO中有Date字段的类里加上注释,如下

public class Runrelease {
    private Integer releaseid;

    private String releasePublisherid;

    @JsonDeserialize(using = DateJsonDeserializer.class) 
    @JsonSerialize(using = DateJsonSerializer.class)  
    private Date releasePicktime;
}

猜你喜欢

转载自blog.csdn.net/weixin_41272626/article/details/82385523
今日推荐