jackson
代码
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import java.util.List;
/**
* @author bai
*/
public class JsonUtils {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 将对象转换成json字符串。
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 将json结果集转化为对象
*
* @param jsonData json数据
* @param beanType 对象中的object类型
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 将json数据转换成pojo对象list
* @param jsonData
* @param beanType
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Data
// @JsonInclude(JsonInclude.Include.NON_EMPTY )//空 或者null 都不打印
@JsonIgnoreType //定义在类上面 会使用到该类的json 忽略
@JsonPropertyOrder(value = {"id","date","name"}) //指定顺序
static class Stu {
@JsonProperty("Name") //匹配字段
private String name ;
@JsonIgnore //忽略某个属性
private String password ;
private Integer id;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") //转化成特定的格式
private Date date;
}
public static void main(String[] args) {
Stu stu = new Stu();
stu.setName("sa");
stu.setDate(new Date());
stu.setPassword("123456");
stu.setId(2);
String toJson = JsonUtils.objectToJson(stu);
System.out.println(toJson);
}
}
实体类 空或者null 转换成jsonString 不打印 在类上面添加
@JsonInclude(JsonInclude.Include.NON_EMPTY )//空 或者null 都不打印
//将该标记放在属性上,如果该属性为NULL则不参与序列化
//如果放在类上边,那对这个类的全部属性起作用
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_NULL 属性为NULL 不序列化
或者可以对MAPPER 直接设置
static {
MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
}