前言
springboot自带默认json解析jackson
,可以在不引入其他json解析包情况下,解析json字段
jackson用法
本文使用的是jdk23
和springboot3.4.x
版本,如果是在非springboot项目,就动态添加包
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-databind</artifactid> <version>2.18.2</version> </dependency>
将对象解析为json字符串
import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { user user = new user(1l, "aa"); objectmapper objectmapper = new objectmapper(); try { string json = objectmapper.writevalueasstring(user); system.out.println(json); } catch (ioexception e) { throw new runtimeexception(e); } } }
输出结果为
将json解析为对象
import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { user user = new user(1l, "aa"); objectmapper objectmapper = new objectmapper(); try { string json = objectmapper.writevalueasstring(user); system.out.println(json); user user1 = objectmapper.readvalue(json, user.class); system.out.println(user1); } catch (ioexception e) { throw new runtimeexception(e); } } }
将json文件转换为json
将user.json
放置于resources
文件夹下
import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.file; import java.io.ioexception; import java.util.objects; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { user user = new user(1l, "aa"); objectmapper objectmapper = new objectmapper(); try { string json = objectmapper.writevalueasstring(user); system.out.println(json); file file = new file(objects.requirenonnull(user.class.getclassloader().getresource("user.json")).getfile()); user user1 = objectmapper.readvalue(file, user.class); system.out.println(user1); } catch (ioexception e) { throw new runtimeexception(e); } } }
输出结果为
将url转换成json
import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; import java.net.uri; import java.net.url; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { user user = new user(1l, "aa"); objectmapper objectmapper = new objectmapper(); try { string json = objectmapper.writevalueasstring(user); system.out.println(json); url url = uri.create("http://192.168.69.183:16023/user.json").tourl(); user user2 = objectmapper.readvalue(url, user.class); system.out.println(user2); } catch (ioexception e) { throw new runtimeexception(e); } } }
备注: 搭建个nginx
服务器环境,将user.json
放入静态资源映射下
jdk20
版本以下的url
需要这么写
url url = new url("http://192.168.69.183:16023/user.json");
这种jdk20
以上过期了,转换成
url url = uri.create("http://192.168.69.183:16023/user.json").tourl();
字节转换成json
import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; import java.nio.charset.standardcharsets; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { objectmapper objectmapper= new objectmapper(); string json = """ {"id":1,"name":"aa"} """; try { user user2 = objectmapper.readvalue(json.getbytes(standardcharsets.utf_8), user.class); system.out.println(user2); } catch (ioexception e) { throw new runtimeexception(e); } } }
输出结果为
jdk17
版本以下字符串需要这些写
string json = "{\"id\":1,\"name\":\"aa\"}";
字符串转义
json数组转对象数组
package cn.com.ut.cloud.demoobjectmapepr.model; import com.fasterxml.jackson.core.type.typereference; import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; import java.util.list; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { objectmapper objectmapper = new objectmapper(); list<user> userlist = list.of(new user(1l, "aa"), new user(2l, "bb")); try { string json = objectmapper.writevalueasstring(userlist); system.out.println(json); list<user> list = objectmapper.readvalue(json, new typereference<>() { }); system.out.println(list); } catch (ioexception e) { throw new runtimeexception(e); } } }
输出结果为
json转map
import com.fasterxml.jackson.core.type.typereference; import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; import java.util.map; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { objectmapper objectmapper = new objectmapper(); user user = new user(1l, "aa"); try { string json = objectmapper.writevalueasstring(user); system.out.println(json); map<string, object> map = objectmapper.readvalue(json, new typereference<>() { }); system.out.println(map); } catch (ioexception e) { throw new runtimeexception(e); } } }
输出结果为
jsonnode使用
jsonnode
可以将json
中的字段取出来
import com.fasterxml.jackson.databind.jsonnode; import com.fasterxml.jackson.databind.objectmapper; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; import java.io.ioexception; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { objectmapper objectmapper = new objectmapper(); user user = new user(1l, "aa"); try { string json = objectmapper.writevalueasstring(user); system.out.println(json); jsonnode jsonnode = objectmapper.readtree(json); system.out.println(jsonnode.get("id").astext()); } catch (ioexception e) { throw new runtimeexception(e); } } }
输出结果为
string id = jsonnode.get("id").astext(); double id = jsonnode.get("id").asdouble(); int id = jsonnode.get("id").asint(); long id = jsonnode.get("id").aslong();
动态添加json字段
import com.fasterxml.jackson.databind.objectmapper; import com.fasterxml.jackson.databind.node.objectnode; import lombok.allargsconstructor; import lombok.builder; import lombok.data; import lombok.noargsconstructor; @data @builder @noargsconstructor @allargsconstructor public class user { private long id; private string name; public static void main(string[] args) { objectmapper objectmapper = new objectmapper(); objectnode objectnode = objectmapper.createobjectnode(); objectnode.put("id", "1"); objectnode.put("name", "1"); objectnode.put("age", "1"); system.out.println(objectnode.tostring()); } }
输出结果为
总结
可以使用springboot自身携带的jackson包操作json,当然,现在还有很多优秀的json解析包,根据自身擅长的做技术选型
以上就是springboot中jackson用法详解的详细内容,更多关于springboot jackson用法的资料请关注代码网其它相关文章!
发表评论