Java 对象转Json,@JSONField对象字段重命名和顺序问题

这篇具有很好参考价值的文章主要介绍了Java 对象转Json,@JSONField对象字段重命名和顺序问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、引入maven依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.66</version>
        </dependency>

二、字段重命名

1.创建一个测试实体

import lombok.Data;

import java.io.Serializable;

/**
 * @类名 WeChatBusinessLicenseInfo
 * @描述 营业执照/登记证书信息(测试用)
 * @版本 1.0
 * @创建人 XuKang
 * @创建时间 2021/12/24 10:43
 **/
@Data
public class LkWeChatBusinessLicenseInfo implements Serializable {

    private static final long serialVersionUID = 1582941630439552458L;

    private String businessLicenseCopy;

    private String businessLicenseNumber;

    private String merchantName;

    private String legalPerson;

    private String companyAddress;

    private String businessTime;

    public LkWeChatBusinessLicenseInfo(){
        this.businessLicenseCopy = "1";
        this.businessLicenseNumber = "2";
        this.merchantName = "3";
        this.legalPerson = "4";
        this.companyAddress = "5";
        this.businessTime = "6";
    }
}

2.将实体转换为json字符串,看看未转换前的效果

System.out.println(JSONObject.toJSONString(new LkWeChatBusinessLicenseInfo()));

{
    "businessLicenseCopy":"1",
    "businessLicenseNumber":"2",
    "businessTime":"6",
    "companyAddress":"5",
    "legalPerson":"4",
    "merchantName":"3"
}

3.我们要转换为带下划线的key,例如把businessLicenseCopy转换为business_license_copy

我们需要修改实体,加上注解@JSONField

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;

/**
 * @类名 WeChatBusinessLicenseInfo
 * @描述 营业执照/登记证书信息(测试用)
 * @版本 1.0
 * @创建人 XuKang
 * @创建时间 2021/12/24 10:43
 **/
@Data
public class LkWeChatBusinessLicenseInfo implements Serializable {

    private static final long serialVersionUID = 1582941630439552458L;

    @JSONField(name = "business_license_copy")
    private String businessLicenseCopy;

    @JSONField(name = "business_license_number")
    private String businessLicenseNumber;

    @JSONField(name = "merchant_name")
    private String merchantName;

    @JSONField(name = "legal_person")
    private String legalPerson;

    @JSONField(name = "company_address")
    private String companyAddress;

    @JSONField(name = "business_time")
    private String businessTime;

    public LkWeChatBusinessLicenseInfo(){
        this.businessLicenseCopy = "1";
        this.businessLicenseNumber = "2";
        this.merchantName = "3";
        this.legalPerson = "4";
        this.companyAddress = "5";
        this.businessTime = "6";
    }

}

4.加上注解后打印转换后的json

System.out.println(JSONObject.toJSONString(new LkWeChatBusinessLicenseInfo()));

{
    "business_license_copy":"1",
    "business_license_number":"2",
    "business_time":"6",
    "company_address":"5",
    "legal_person":"4",
    "merchant_name":"3"
}

三、字段排序

1.我们输出打印的json是这样的

{
    "business_license_copy":"1",
    "business_license_number":"2",
    "business_time":"6",
    "company_address":"5",
    "legal_person":"4",
    "merchant_name":"3"
}

我们想按照一定的顺序重新排序key

2.在@JSONField注解加上排序ordinal

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;

/**
 * @类名 WeChatBusinessLicenseInfo
 * @描述 营业执照/登记证书信息(测试用)
 * @版本 1.0
 * @创建人 XuKang
 * @创建时间 2021/12/24 10:43
 **/
@Data
public class LkWeChatBusinessLicenseInfo implements Serializable {

    private static final long serialVersionUID = 1582941630439552458L;

    @JSONField(name = "business_license_copy",ordinal = 1)
    private String businessLicenseCopy;

    @JSONField(name = "business_license_number",ordinal = 2)
    private String businessLicenseNumber;

    @JSONField(name = "merchant_name",ordinal = 3)
    private String merchantName;

    @JSONField(name = "legal_person",ordinal = 4)
    private String legalPerson;

    @JSONField(name = "company_address",ordinal = 5)
    private String companyAddress;

    @JSONField(name = "business_time",ordinal = 6)
    private String businessTime;

    public LkWeChatBusinessLicenseInfo(){
        this.businessLicenseCopy = "1";
        this.businessLicenseNumber = "2";
        this.merchantName = "3";
        this.legalPerson = "4";
        this.companyAddress = "5";
        this.businessTime = "6";
    }

}

3.输出打印转换后的实体:

System.out.println(JSONObject.toJSONString(new LkWeChatBusinessLicenseInfo()));

{
    "business_license_copy":"1",
    "business_license_number":"2",
    "merchant_name":"3",
    "legal_person":"4",
    "company_address":"5",
    "business_time":"6"
}

四、总结

重命名除@JSONField,还有@JsonProperty、@SerializedName;

@JsonProperty主要用于入参转换,和Json字符串序列化为Java对象;

@SerializedName 改变了默认序列化和默认反序列化的字段取值;文章来源地址https://www.toymoban.com/news/detail-402204.html

到了这里,关于Java 对象转Json,@JSONField对象字段重命名和顺序问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JSON对象字段为null值的显示处理

    如何将JSON对象中字段为null值的也显示出来 如果字段的值为null,json对象的默认设置是当字段为null时,不会将该字段和null值添加到这个json对象中; 1、针对jackson的json对象全局配置(举例application.properties文件): 针对gson的json对象全局配置(举例application.properties文件): 当然也可以通过

    2024年02月12日
    浏览(48)
  • java中使用BeanUtils.copyProperties方法对象复制同名字段类型不同赋值为空问题解析

    对象之间的复制,dto对象中字段类型为String,model中字段类型为BigDecimal。使用BeanUtils.copyProperties方法进行对象批量复制。 提示:这里描述项目中遇到的问题: 使用Spring 的 BeanUtils.copyProperties 方法发现dto中的String类型字段无法转换为model中的BigDecimal类型同名字段。 使用Spring

    2024年02月13日
    浏览(39)
  • 对比两个json对象有那几个字段被修改,并返回有改动的字段内容

     如果您想比较两个 JSON 对象,找出哪些字段发生了变化,并返回发生变化的字段及其新的值,您可以编写一个函数来递归比较对象。以下是一个 TypeScript 示例: 这个函数 compareObjects 将递归比较两个对象,并返回发生变化的字段及其新值。在示例中, changes 对象将包含 { b:

    2024年02月02日
    浏览(40)
  • 接口请求与对象转json中字段大小写的处理

    》前端请求对象字段为大写 》后端接受对象字段也为大写 前后端对象字段一模一样,就是接受不到前端传过来的值,针对这种情况,只需在后端对象中加 @JsonProperty(\\\"Id\\\") 即可 如下所示: 1)通过 com.fasterxml.jackson.databind.ObjectMapper 去转换,具体代码如下 2、 第二种通过gson去转

    2024年04月23日
    浏览(40)
  • 【Java 笔记】使用Fastjson2时,对象转json首字母大小写问题

    开发环境: 一、JSON 转 Object 1.问题: 2.解决方案 二、Object转 JSON 三、SpringBoot设置fastjson2 为默认 pom.xml 2. 配置类 四、FastJson2 注解 默认 2. @JSONType 类注解 3. @JSONField(name = \\\"othername\\\") 属性注解 五、思考问题 Java 对象为什么需要序列化? 为什么对象没有实现Serializable接口,也可以

    2024年02月16日
    浏览(53)
  • 【mybatis-plus实体类复杂对象字段json自动相互转换,以及自定义字段类型解析器】

    引言: mybatis-plus集合对象字段json如何自动进行相互的转换? 怎样在使用mybatis-plus操作数据表的时候自动对实体类属性进行自动解析? 我们平时在做开发的时候,会遇到一个字段保存json串的情况。一般情况下mybatis-plus在做插入/更新之前将对象手动转换成json串,查询要用的时

    2023年04月13日
    浏览(103)
  • 使用Java反射针对对象字段比较。

    在Java开发中,我们经常需要比较两个对象的字段差异,尤其是在处理数据同步、状态更新等场景中。本文介绍了如何使用Java反射和Stream API优化对象字段比较的过程。 类型检查 : 确保传入的两个对象属于同一类型,否则抛出异常。 使用Stream API : 利用Stream API和Lambda表达式简化

    2024年04月14日
    浏览(32)
  • Java中List对象集合按照对象中某字段进行排序

    在Java中,可以使用List集合对象的sort(Comparator? super E c)方法,按照对象中某字段对List集合进行排序 栗子: 打印输出结果如下:

    2024年02月12日
    浏览(56)
  • Java对象中转换空值的字段

    在后端返回数据给前端时,公司的框架会把值为null的数据去掉,方便前端取值。 如:Person对象为:{name:\\\"浩二\\\", age:24, weight:null, height:114},那返回给前端的就为{name:\\\"浩二\\\", age:24, height:114}。 如果这个时候有个需求:   Integer类型的字段为null给-1   Long类型的字段为null给-1L   S

    2024年02月08日
    浏览(89)
  • JSON对象转为Java类对象

    本文讲述两种方法,使JSON对象转为Java类对象。基于 FastJson1 对于以下的JSON对象: 假设以上的JSON对象已通过toJSONString()方法转为String,那么有两种方法可以将其转为Java类对象, 前提是已定义一个YourClass类,其成员变量可以容纳以上records内的各个字段, 两种转换方法如下:

    2024年02月10日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包