当前位置:   article > 正文

@JSONField注解的使用_注解jsonfield

注解jsonfield

@JSONField注解可以用在方法(method),属性(field)以及方法中的参数(parameter)上。JSONField中的name属性用来指定JSON串中key的名称。

Demo:

  1. @JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
  2. public class Person {
  3. @JSONField(name = "name") // 注意观察生成的JSON串中name和age的区别
  4. private String name;
  5. @JSONField(name = "AGE")
  6. private String age;
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public String getAge() {
  14. return age;
  15. }
  16. public void setAge(String age) {
  17. this.age = age;
  18. }
  19. }
  20. @JSONField也可以直接作用在get或set方法上
  21. @JSONField(name = "name")
  22. public String getName() {
  23. return name;
  24. }
  25. @JSONField(name = "name")
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. @JSONField(name = "AGE")
  30. public String getAge() {
  31. return age;
  32. }
  33. @JSONField(name = "AGE")
  34. public void setAge(String age) {
  35. this.age = age;
  36. }
  37. PSFastJson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。
  1. public class PersonTest {
  2. private Person person;
  3. /**
  4. * 初始化对象
  5. */
  6. @Before
  7. public void setUp() {
  8. person = new Person();
  9. person.setName("gyl");
  10. person.setAge("20");
  11. }
  12. @Test
  13. public void test() {
  14. String jsonStr = JSONObject.toJSONString(person);
  15. System.out.println("bean to json:" + jsonStr);
  16. person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class);
  17. System.out.println("json to bean:" + person.getName());
  18. }
  19. }

输出结果:

  1. Output:
  2. bean to json:{"AGE":"20","name":"gyl"}
  3. json to bean:gyl

JSONField默认支持的类型

  1. public @interface JSONField {
  2. int ordinal() default 0;
  3. String name() default "";
  4. String format() default "";
  5. boolean serialize() default true;
  6. boolean deserialize() default true;
  7. SerializerFeature[] serialzeFeatures() default {};
  8. Feature[] parseFeatures() default {};
  9. String label() default "";
  10. boolean jsonDirect() default false;
  11. Class<?> serializeUsing() default Void.class;
  12. Class<?> deserializeUsing() default Void.class;
  13. String[] alternateNames() default {};
  14. boolean unwrapped() default false;
  15. }

format规定日期格式

  1. @JSONField(format="yyyy-MM-dd HH:mm:ss")
  2. private Date date;

ordinal规定字段的顺序

  1. @JSONField(ordinal = 3)
  2. private int f0;
  3. @JSONField(ordinal = 2)
  4. private int f1;
  5. @JSONField(ordinal = 1)
  6. private int f2;
  7. fastjson序列化⼀个java bean,是根据fieldName的字母序进⾏序列的你可以通过ordinal指定字段的顺序。

serialize/deserialize指定字段不序列化

  1. @JSONField(serialize=false)
  2. public Date date;

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号