与后台交互返回的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;
}