概述
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中的常见使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复