json和java对象相互转换
json和java对象相互转换
springboot中json转换默认使用的是jackson包,通过spring-boot-starter-web依赖的
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
1 在属性上添加注解@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
可以修改对象转成json后的时间格式
2 在属性上添加注解 @JsonInclude(JsonInclude.Include.NON_NULL)
如果该属性为null,则不序列化
Include.Include.ALWAYS 默认
Include.NON_DEFAULT 属性为默认值不序列化
Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化
Include.NON_NULL 属性为NULL 不序列化
3 在属性上添加注解 @JsonProperty("userName")
这里的别名'userName' ,可以有两个作用
一,当对象转为json时,该属性的key就是别名。
二,当json转为对象时,像这种格式{"id":100,"phone":"15211115013","name.wx":"zs"} , "name,wx" 就要为属性设置别名,否则转换会出错
import java.io.IOException; import java.util.List; import java.util.Map; import org.springframework.lang.Nullable; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonUtils { public static final ObjectMapper mapper = new ObjectMapper(); /** * 对象转换为json字符串 * @param obj * @return */ @Nullable public static String toString(Object obj) { if (obj == null) { return null; } if (obj.getClass() == String.class) { return (String) obj; } try { return mapper.writeValueAsString(obj); } catch (JsonProcessingException e) { return null; } } @Nullable public static <T> T toBean(String json, Class<T> tClass) { try { return mapper.readValue(json, tClass); } catch (IOException e) { return null; } } @Nullable public static <E> List<E> toList(String json, Class<E> eClass) { try { return mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, eClass)); } catch (IOException e) { return null; } } @Nullable public static <K, V> Map<K, V> toMap(String json, Class<K> kClass, Class<V> vClass) { try { return mapper.readValue(json, mapper.getTypeFactory().constructMapType(Map.class, kClass, vClass)); } catch (IOException e) { return null; } } @Nullable public static <T> T nativeRead(String json, TypeReference<T> type) { try { return mapper.readValue(json, type); } catch (IOException e) { return null; } } class User{ private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public User() { super(); } } public static void main(String[] args) { String json="{\"namge\":\"zhuxinjun\",\"age\":\"21\"}"; Map<String, String> map = toMap(json, String.class, String.class); System.out.println("map:"+map); String j="[{\"namge\":\"zhuxinjun\",\"age\":\"21\"},{\"namge\":\"yangyang\",\"age\":\"32\"}]"; List<Map<String, String>> maps = nativeRead(j, new TypeReference<List<Map<String, String>>>() { }); for(Map<String,String> map1:maps){ System.out.println("map1"+map1); } } }
转载自: https://blog.csdn.net/u013089490/article/details/83585794

更多精彩