赞
踩
@JSONField注解可以用在方法(method),属性(field)以及方法中的参数(parameter)上。JSONField中的name属性用来指定JSON串中key的名称。
Demo:
- @JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
- public class Person {
- @JSONField(name = "name") // 注意观察生成的JSON串中name和age的区别
- private String name;
- @JSONField(name = "AGE")
- private String age;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getAge() {
- return age;
- }
-
- public void setAge(String age) {
- this.age = age;
- }
- }
-
- @JSONField也可以直接作用在get或set方法上
- @JSONField(name = "name")
- public String getName() {
- return name;
- }
-
- @JSONField(name = "name")
- public void setName(String name) {
- this.name = name;
- }
-
- @JSONField(name = "AGE")
- public String getAge() {
- return age;
- }
-
- @JSONField(name = "AGE")
- public void setAge(String age) {
- this.age = age;
- }
-
- PS:FastJson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。
-
- public class PersonTest {
- private Person person;
-
- /**
- * 初始化对象
- */
- @Before
- public void setUp() {
- person = new Person();
- person.setName("gyl");
- person.setAge("20");
- }
-
- @Test
- public void test() {
- String jsonStr = JSONObject.toJSONString(person);
- System.out.println("bean to json:" + jsonStr);
- person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class);
- System.out.println("json to bean:" + person.getName());
- }
- }
-
输出结果:
- Output:
- bean to json:{"AGE":"20","name":"gyl"}
- json to bean:gyl
- 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;
- }
-
- @JSONField(format="yyyy-MM-dd HH:mm:ss")
- private Date date;
-
- @JSONField(ordinal = 3)
- private int f0;
-
- @JSONField(ordinal = 2)
- private int f1;
-
- @JSONField(ordinal = 1)
- private int f2;
- fastjson序列化⼀个java bean,是根据fieldName的字母序进⾏序列的你可以通过ordinal指定字段的顺序。
-
- @JSONField(serialize=false)
- public Date date;
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。