我是靠谱客的博主 无语芝麻,最近开发中收集的这篇文章主要介绍Jackson中的常见使用Jackson中的常见使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Jackson中的常见使用

1. 常用注解

@JsonAlias

属性别名,可为属性添加多个别名,如@JsonAlias({"username","user_name"})String name;,当json串中属性名为username、user_name、name都可以识别。

@JsonProperty

用于属性,将属性的名称序列化时转换为另外一个名称,如@JsonProperty("username")String name;,当json串中属性名为username时才可以解析,无法识别name会报错。

2. ObjectMapper

定义一个实体类User

@Data
public class User {
    private Integer id;
    @JsonAlias("username")
    private String name;
}

2.1 Json字符串与对象之间的转换

单个对象

String jsonStr = "{"id": 24, "name": "程序员"}";
ObjectMapper objectMapper = new ObjectMapper();
//字符串转对象 -- User(id=24, name=程序员)
User user = objectMapper.readValue(jsonStr, User.class);
//对象转字符串 -- {"id":24,"name":"程序员"}
String s = objectMapper.writeValueAsString(user);

readValue()有许多重载方法,可以解析byte数组、文件、流、字符串等

多个对象

String jsonStr = "[{"id": 24, "name": "程序猿"},{"id": 25, "name": "程序媛"}]";
ObjectMapper objectMapper = new ObjectMapper();
//转对象数组 -- [User(id=24, name=程序猿), User(id=25, name=程序媛)]
User[] user = objectMapper.readValue(jsonStr, User[].class);
//对象转字符串 -- [{"id":24,"name":"程序猿"},{"id":25,"name":"程序媛"}]
String s = objectMapper.writeValueAsString(user);
//转对象集合 -- [{id=24, name=程序猿}, {id=25, name=程序媛}]
List<User> arrayList = objectMapper.readValue(jsonStr, List.class);

数组形式的字符串推荐使用对象数组,当然对象集合也是可以的。

2.2 Json字符串与Map的转换

string jsonStr = "{"id": 24, "name": "程序猿"}";
ObjectMapper objectMapper = new ObjectMapper();
//字符串转Map -- {id=24, name=程序猿}
Map<String,Object> map = objectMapper.readValue(jsonStr, Map.class);
//Map转字符串 -- {"id":24,"name":"程序猿"}
String s = objectMapper.writeValueAsString(map);

3. 树模型

获取JsonNode的方式:

  • readValue(xx,Json.class)
  • readTree(xx)
String jsonStr = "{"id": 24, "name": "程序猿"}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readValue(jsonStr, JsonNode.class);
System.out.println(jsonNode);	//{"id":24,"name":"程序猿"}
JsonNode jsonNode1 = objectMapper.readTree(jsonStr);
System.out.println(jsonNode1);	//{"id":24,"name":"程序猿"}

获取属性名与值:

String jsonStr = "{"id": 24, "name": "程序猿"}";
JsonNode jsonNode = objectMapper.readTree(jsonStr);
//迭代
Iterator<String> stringIterator = jsonNode.fieldNames();
while (stringIterator.hasNext()){
    String next = stringIterator.next();
    //id    name
    System.out.println(next);
}
JsonNode id = jsonNode.get("id");
// 24
int errorCode = id.asInt();
JsonNode name = jsonNode.get("name");
// 程序猿
String s = name.asText();

如果是嵌套方式的json串:

String jsonStr = "{"id": 24, "name": "程序员","other": {"num": 54,"desc": "描述"}}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonStr);
Iterator<String> iterator = jsonNode.fieldNames();
while (iterator.hasNext()){
    String next = iterator.next();
    // id   name   other
    System.out.println(next);
}
JsonNode other = jsonNode.get("other");
Iterator<String> stringIterator = other.fieldNames();
while (stringIterator.hasNext()){
    String next = stringIterator.next();
    //num   desc
    System.out.println(next);
}

Object与JsonNode之间的转换

User user = new User(1,"程序员");
ObjectMapper objectMapper = new ObjectMapper();
// 对象转JsonNode
JsonNode jsonNode = objectMapper.valueToTree(user);
// JsonNode转对象
User user1 = objectMapper.treeToValue(jsonNode, User.class);

最后

以上就是无语芝麻为你收集整理的Jackson中的常见使用Jackson中的常见使用的全部内容,希望文章能够帮你解决Jackson中的常见使用Jackson中的常见使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部