java 字符串反序列化_Java Jackson ObjectMapper字符串的序列化和反序列化

Jackson的readValue以及write的使用

1.定义一个User对象

public class User {

private String name;

private int age;

private Date birthday; // 没有使用jackson注解将会变成时间戳

private String email;

public User(String name, int age, Date birthday, String email) {

this.name = name;

this.age = age;

this.birthday = birthday;

this.email = email;

}

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 Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

}

2.使用jackson 的ObjectMapper 类中的 readValue()方法进行转换

public class JsonTest

{

public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {

User user=new User("隔壁老王", 18, new Date(), "110");

User user1=new User("隔壁老王", 18, new Date(), "110");

List list = new ArrayList();

list.add(user);

list.add(user1);

//转换器

ObjectMapper mapper = new ObjectMapper();

// 对象--json数据

String json=mapper.writeValueAsString(user); //将对象转换成json

// 将json 字符串转成User类

User u = mapper.readValue(json, User.class);

// 将json 字符串转化成List

List list1 = mapper.readValue(list, new TypeReference>(){}f)

// 其他的如将文件中转化成类的方法也相识 如

// readValue(File src, TypeReference valueTypeRef)

// readValue(File src, Class valueType)

}

}

3.使用jackson 的ObjectMapper 类中的 writerValue()方法进行转换

public class JsonTest

{

public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {

SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");

User user=new User("隔壁老王", 18, dateformat.parse("1996-10-01"), "110");

//转换器

ObjectMapper mapper = new ObjectMapper();

//User类转JSON 字符串

String json = mapper.writeValueAsString(user);

System.out.println(json);

//Java集合转JSON 字符串

List users = new ArrayList();

users.add(user);

String jsonlist = mapper.writeValueAsString(users);

System.out.println(jsonlist);

}

}

}

4.使用jackson ObjectMapper获取具体json 字符串中某个key值对于的value

// 假设 json字符串格式为 {content:{rendered: "23"}, titile:{rendered: "别跑"}} 则获取方式如下:

ObjectMapper mapper = new ObjectMapper();

mapper.readTree(content).forEach(jsonNode -> {

String renderedContent = jsonNode.path("content").path("rendered").asText("");

String title = jsonNode.path("title").path("rendered").asText("");

});

5.使用jackson 的提供了一系列注解

@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。

@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。

PS: 如有有什么还需要补充的欢迎留下足迹。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值