FastJson转JackSon(JsonProperty)

Fastjson因多次出现安全漏洞,如反序列化和DoS漏洞,成为关注焦点。尽管其反序列化速度最快,但在处理复杂JSON时可能变慢。它不遵循JavaBean规范,可能影响代码质量,且Apache2.0协议可能限制商业应用。为解决这些问题,文章展示了如何使用Jackson的@JsonProperty进行属性映射。
摘要由CSDN通过智能技术生成

FastJson转JackSon

概述
  1. 安全漏洞 Fastjson曾多次被发现存在安全漏洞,其中包括反序列化漏洞、代码执行漏洞、DoS漏洞等等。这些漏洞可能会导致应用程序受到攻击,造成数据泄露、系统瘫痪等严重后果。
  2. 反序列化性能 Fastjson的反序列化性能在所有Java JSON库中是最快的,但是在某些情况下,它的反序列化性能可能会比其他库慢。例如,当JSON数据包含大量的嵌套对象或数组时,Fastjson的反序列化性能可能会受到影响。
  3. 不支持标准JavaBean规范 Fastjson虽然可以将JSON数据转换成Java对象,但是它并不遵循JavaBean规范。例如,Fastjson允许将Java对象中的属性声明为public,而JavaBean规范要求属性必须声明为private,并提供getter和setter方法。这种不遵循JavaBean规范的行为可能会导致代码的可读性和可维护性变差。
  4. 受限的授权协议 Fastjson采用了Apache 2.0协议,虽然这是一种开源协议,但是在某些情况下,它可能会对商业应用程序的开发和分发造成一定的限制。例如,如果你使用Fastjson开发了一个商业应用程序,你可能需要在软件中包含Fastjson的授权信息,并保证这些信息不被删除或修改。这对于一些商业应用程序的开发者来说可能是不可接受的。
代码
实体类Jsonproperty
  • 例如,我们有一个Java类User,该类包含了一个id属性和一个name属性:
public class User {
    private long id;
    private String name;

    // getter and setter methods
}
  • 我们希望将这个Java类转换成以下JSON格式:
{
    "user_id": 12345,
    "user_name": "John Doe"
}

  • 我们可以使用@JsonProperty注解来指定Java属性与JSON字段之间的映射关系:
public class User {
    @JsonProperty("user_id")
    private long id;
    @JsonProperty("user_name")
    private String name;

    // getter and setter methods
}
实际序列化使用
String param=JsonMapper.nonDefaultMapper().toJson(params)
//具体ObjectMapper使用见:https://blog.csdn.net/cxywangshun/article/details/130501904?spm=1001.2014.3001.5501
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值