fastjson2 下划线字段转驼峰对象

在对接第三方或查询数据库时,返回的字段是下划线分隔的,而在业务中需要转成java对象,java对象的字段是驼峰的,使用fastjson2时,有两种方法可以实现:
比如数据格式是:

{
   "item_id": "1001",
   "item_name": "九花玉露丸"
}

java对象是:

@Data
public class Item{
    private String itemId;
    private String itemName;
}
  1. 最简单的方法

    Item item =JSON.parseObject(json, Item.class,JSONReader.Feature.SupportSmartMatch);
    
  2. 如果有个别字段使用上面的方法不行,可以使用注解

    @Data
    public class Item{
        @JSONField(name ="item_id")
        private String itemId;
        @JSONField(name ="item_name")
        private String itemName;
    }
    

    然后直接转换:

    Item item =JSON.parseObject(json, Item.class);
    

更多开源:https://gitee.com/wgslucky

### 使用 FastJSON 实现 JSON 字符串到驼峰命名风格 Java 对象换 当使用 FastJSON 进行 JSONJava 对象换时,如果遇到 JSON 的键是以蛇形命名法(snake_case),而目标 Java 类中的字段采用的是驼峰命名法(camelCase),可以通过特定的方法来完成这种换。 对于简单的场景可以直接利用 `parseObject` 方法并指定类类型参数来进行换[^1]: ```java public XwRequest json2Bean(JSON json) { return JSON.toJavaObject(json, XwRequest.class); } ``` 为了确保下划线分隔的名字能够被正确映射为驼峰形式,在调用 `parseObject` 或者其他序列化方法之前设置全局配置项是一个有效手段。具体来说就是通过修改 `ParserConfig.getGlobalInstance().setNamingPolicy(NamingStrategy)` 来设定名称策略[^2]。不过更常见也更为推荐的做法是在反序列化过程中让 FastJSON 自动处理这种情况,即无需额外编码即可支持从 snake_case 至 camelCase 的变。 另外一种方式则是针对个别字段应用注解[@JSONField](https://github.com/alibaba/fastjson/wiki/JSONField),这允许开发者自定义每个属性的具体行为,包括但不限于重写其访问器方法名以及控制是否开启大小写的敏感度等特性[^3]。 #### 示例代码展示如何将带有下划线JSON 数据化为遵循驼峰约定的对象实例: 假设有一个名为 `UserDetails` 的 POJO 类,其中包含两个私有成员变量:`user_name` 和 `email_address`;现在希望将其对应的 JSON 表达式解析为此类的一个新实体,并且使这些成员按照驼峰规则存储于内存之中(`userName`, `emailAddress`)。 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; class UserDetails { @JSONField(name="user_name") private String userName; @JSONField(name="email_address") private String emailAddress; // Getters and Setters omitted for brevity } // 假设我们拥有如下所示的一条记录作为输入源数据 String jsonString = "{\"user_name\":\"John Doe\",\"email_address\":\"[email protected]\"}"; // 执行换操作 UserDetails userDetails = JSON.parseObject(jsonString, UserDetails.class); System.out.println(userDetails.getUserName()); // 输出: John Doe System.out.println(userDetails.getEmailAddress()); // 输出: [email protected] ``` 此段程序展示了即使原始 JSON 文本采用了不同的命名习惯,仍然可以借助 FastJSON 提供的功能轻松地创建出符合预期格式的目标对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wgslucky

各位都是我的衣食父母

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值