使用FastJson进行对象和JSON转换属性命名规则为下划线和驼峰的问题

栏目: Java · 发布时间: 5年前

内容简介:最近在对接支付宝,在编写支付需要的bean的时候,发现支付宝需要传递的参数命名方式都是下划线,自己idea又装了阿里巴巴的编程规约,代码老是有黄色提示,显得特别难看。于是乎我把属性改成了驼峰的命名方式,然后下意识的在上面加了一个@JsonProperty注解实现相互转换过程中属性命名方式也能自动转换。可是我运行代码时发现代码报错运行不起来了。主要代码如下:突然发现这个@JsonProperty注解是Spring框架自带jackson的注解,不是阿里FastJson的注解,于是乎我看了看找到了下面的这个注解

最近在对接支付宝,在编写支付需要的bean的时候,发现支付宝需要传递的参数命名方式都是下划线,自己idea又装了阿里巴巴的编程规约,代码老是有黄色提示,显得特别难看。于是乎我把属性改成了驼峰的命名方式,然后下意识的在上面加了一个@JsonProperty注解实现相互转换过程中属性命名方式也能自动转换。可是我运行代码时发现代码报错运行不起来了。主要代码如下:

public class AliPayParam {

    @JsonProperty(name="out_trade_no")
    private String outTradeNo;

    @JsonProperty(name="total_amount")
    private String totalAmount;
    /**
     * 公共回传参数
     */
    @JsonProperty(name="passback_params")
    private String passbackParams;

    private String subject;
    private String body;

    @JsonProperty(name="product_code")
    private String productCode;
    /**
     * 该参数在请求到支付宝时开始计时,该笔订单允许的最晚付款时间,逾期将关闭交易。
     * 取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天
     * (1c-当天的情况下,无论交易何时创建,都在0点关闭)。
     * 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
     */
    @JsonProperty(name="timeout_express")
    private String timeoutExpress;
    
}

突然发现这个@JsonProperty注解是Spring框架自带jackson的注解,不是阿里FastJson的注解,于是乎我看了看找到了下面的这个注解:

public @interface JSONField {
    /**
     * config encode/decode ordinal
     * @since 1.1.42
     * @return
     */
    // 配置序列化和反序列化的顺序,1.1.42版本之后才支持
    int ordinal() default 0;
    // 指定字段的名称
    String name() default "";
    // 指定字段的格式,对日期格式有用
    String format() default "";
    // 是否序列化
    boolean serialize() default true;
    // 是否反序列化
    boolean deserialize() default true;

    SerializerFeature[] serialzeFeatures() default {};

    Feature[] parseFeatures() default {};
    
    String label() default "";
    
    /**
     * @since 1.2.12
     */
    boolean jsonDirect() default false;
    
    /**
     * Serializer class to use for serializing associated value.
     * 
     * @since 1.2.16
     */
    Class<?> serializeUsing() default Void.class;
    
    /**
     * Deserializer class to use for deserializing associated value. 
     * 
     * @since 1.2.16 
     */
    Class<?> deserializeUsing() default Void.class;

    /**
     * @since 1.2.21
     * @return the alternative names of the field when it is deserialized
     */
    String[] alternateNames() default {};

    /**
     * @since 1.2.31
     */
    boolean unwrapped() default false;
}

知道这个注解之后,把@JsonProperty替换成@JSONField注解就行了

最后更新于 2018-12-24 10:04:03 并被添加「java fastjson」标签,已有 2 位童鞋阅读过。


以上所述就是小编给大家介绍的《使用FastJson进行对象和JSON转换属性命名规则为下划线和驼峰的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

腾讯网UED体验设计之旅

腾讯网UED体验设计之旅

任婕 等 / 电子工业出版社 / 2015-4 / 99.00元

《腾讯网UED体验设计之旅》是腾讯网UED的十年精华输出,涵盖了丰富的案例、极富冲击力的图片,以及来自腾讯网的一手经验,通过还原一系列真实案例的幕后设计故事,从用户研究、创意剖析、绘制方法、项目管理等实体案例出发,带领读者经历一场体验设计之旅。、 全书核心内容涉及网媒用户分析与研究方法、门户网站未来体验设计、H5技术在移动端打开的触控世界、手绘原创设计、改版迭代方法、文字及信息图形化设计、媒......一起来看看 《腾讯网UED体验设计之旅》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具