栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jackson中的常见使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 arrayList = objectMapper.readValue(jsonStr, List.class);

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

2.2 Json字符串与Map的转换
string jsonStr = "{"id": 24, "name": "程序猿"}";
ObjectMapper objectMapper = new ObjectMapper();
//字符串转Map -- {id=24, name=程序猿}
Map 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 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 iterator = jsonNode.fieldNames();
while (iterator.hasNext()){
    String next = iterator.next();
    // id   name   other
    System.out.println(next);
}
JsonNode other = jsonNode.get("other");
Iterator 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);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992524.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号