我们平常不得不了解一种数据就是json数据,而在java中,处理这数据的两种主流的一种是fastjson,一种是jackson
简单给大家说一下他们两个
https://github.com/alibaba/fastjson
Fastjson 是一个 Java 库,可用于将 Java 对象转换为 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Fastjson 可以处理任意 Java 对象,包括您没有源代码的现有对象。
可以通过maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
Jackson 是一个用于处理 JSON 数据的 Java 库,它能够将 Java 对象与 JSON 之间进行转换(序列化和反序列化)。Jackson 提供了多个模块,能够灵活地处理各种数据格式和需求
可以通过maven
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.9</version>
</dependency>
因为我主要讲讲fastjson,这里就简单介绍了
测试代码
import com.fasterxml.jackson.databind.ObjectMapper;
public class Example {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
User user = new User("John", 30);
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
String jsonInput = "{\"name\":\"John\",\"age\":30}";
User deserializedUser = objectMapper.readValue(jsonInput, User.class);
System.out.println(deserializedUser.getName());
}
}
class User {
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
输出的结果分别为
{"name":"John","age":30}
John
fastjson可以说是国内用得比较多的了,比如很火的若依系统里面,就有我们的fastjson
可以看到用了许许多多fastjson去解析json数据
但是fastjson的漏洞随着版本的迭代,不同的绕过手法一直在更新,其中的绕过都是从底层中找到的,所以在这里给大家分析一下fatsjon到底是如何解析json数据的,才能更好的学习fastjson,而且fastjson也是java安全必学的一部分,面试几乎都会问到
package demo2;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
package demo2;
import com.alibaba.fastjson.JSON;
public class FastjsonTest {
public static void main(String[] args) {
Person person = new Person("LJL", 18);
String jsonString = JSON.toJSONString(person);//当然还有很多方法,这个不重要
System.out.println(jsonString);
}
}
我们在String jsonString = JSON.toJSONString(person);这里下断点
跟进来到一堆重载的方法,根据你传入参数的类型来选择方法
更多内容已被隐藏
主题内容你需要付费可见 (点击购买) 售价:5 金币
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-魔方 | 100.00 | 0 | 2024-11-07 20:08:56 | 本月首次发表一篇有效文章奖励 100 |
Track-魔方 | 500.00 | 10 | 2024-11-07 20:08:36 | 深度 200 普适 200 可读 100 |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
小瑟斯
发表于 7天前
瑞思拜
评论列表
加载数据中...
玄天
发表于 5天前
fastjson
评论列表
加载数据中...
学kali的小白
发表于 3天前
学习了
评论列表
加载数据中...
1198950962
发表于 3天前
1
评论列表
加载数据中...
sgrzhou
发表于 3天前
1
评论列表
加载数据中...
马小芳
发表于 2天前
tql
评论列表
加载数据中...
fan
发表于 1天前
fastjson
评论列表
加载数据中...