最近在对接支付宝,在编写支付需要的bean的时候,发现支付宝需要传递的参数命名方式都是下划线,自己idea又装了阿里巴巴的编程规约,代码老是有黄色提示,显得特别难看。于是乎我把属性改成了驼峰的命名方式,然后下意识的在上面加了一个@JsonProperty注解实现相互转换过程中属性命名方式也能自动转换。可是我运行代码时发现代码报错运行不起来了。主要代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 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;
@JsonProperty(name="timeout_express") private String timeoutExpress; }
|
突然发现这个@JsonProperty注解是Spring框架自带jackson的注解,不是阿里FastJson的注解,于是乎我看了看找到了下面的这个注解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public @interface JSONField {
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 "";
boolean jsonDirect() default false;
Class<?> serializeUsing() default Void.class;
Class<?> deserializeUsing() default Void.class;
String[] alternateNames() default {};
boolean unwrapped() default false; }
|
知道这个注解之后,把@JsonProperty替换成@JSONField注解就行了,转换成Json属性名就会从outTradeNo变成out_trade_no