在某些应用场景下,如果需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",就可以使用@JSONField这个注解。

@JSONField注解的作用范围:Field、Setter和Getter方法;FastJson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。

如果JavaBean没有缺省构造方法,@JSONCreator可以用来指定构造方法来创建Java对象。

使用@JSONField注解,代码案例:package com.what21.fastjson.fj04;

import com.alibaba.fastjson.annotation.JSONField;

public class User {

// ID

@JSONField(name="id2")

private String id;

// 名称

@JSONField(name="name2")

private String name;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}package com.what21.fastjson.fj04;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

public class FastJsonMain {

/**

* @param args

*/

public static void main(String[] args) {

User user = new User();

user.setId("zhangsan");

user.setName("张三");

// 序列化

String json = JSON.toJSONString(user);

System.out.println("User to JSON -> ");

System.out.println(json);

// 反序列化

String upperJson = json.toUpperCase();

user = JSON.parseObject(upperJson, User.class);

System.out.println("JSON to bean :");

System.out.println("user id :" + user.getId());

System.out.println("user name :" + user.getName());

// 反序列化

String jsonStr = "{\"id2\":\"zhangsan\",\"name2\":\"张三\"}";

JSONObject jsonObj = JSONObject.parseObject(jsonStr);

user = JSONObject.toJavaObject(jsonObj, User.class);

System.out.println("JSON to bean :");

System.out.println("user id :" + user.getId());

System.out.println("user name :" + user.getName());

}

}

输出内容:User to JSON ->

{"id2":"zhangsan","name2":"张三"}

JSON to bean :

user id :ZHANGSAN

user name :张三

JSON to bean :

user id :zhangsan

user name :张三

使用@JSONCreator注解,代码案例:package com.what21.fastjson.fj04;

import com.alibaba.fastjson.annotation.JSONCreator;

import com.alibaba.fastjson.annotation.JSONField;

public class UserEntity {

private String id;

private String name;

@JSONCreator

public UserEntity(@JSONField(name = "id") String  id,

@JSONField(name = "name") String name){

this.id = id;

this.name = name;

}

public String getId() {

return id;

}

public String getName() {

return name;

}

}package com.what21.fastjson.fj04;

import com.alibaba.fastjson.JSON;

public class FastJsonAnnotationMain {

/**

* @param args

*/

public static void main(String[] args) {

//

UserEntity userEntity = new UserEntity("what21","IT小奋斗");

String json = JSON.toJSONString(userEntity);

System.out.println("UserEntity to JSON -> ");

System.out.println(json);

// 反序列化

userEntity = JSON.parseObject(json, UserEntity.class);

System.out.println("JSON to bean :");

System.out.println("user id :" + userEntity.getId());

System.out.println("user name :" + userEntity.getName());

}

}

输出内容:UserEntity to JSON ->

{"id":"what21","name":"IT小奋斗"}

JSON to bean :

user id :what21

user name :IT小奋斗

java jsonfield_FastJson 使用@JSONField注解和@JSONCreator指定构造方法相关推荐

  1. java jsonfield_FastJson中@JSONField注解使用

    最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...

  2. java jsonfield_fastjson使用-- @JSONField使用(转)

    @JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上. 我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会 ...

  3. JSONField 注解的使用

    package com.example.springboot;import com.alibaba.fastjson.JSON; import org.junit.jupiter.api.Test;i ...

  4. java jsonfield_关于fastjson的@JSONField注解的一些问题(详解)

    @jsonfield 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用field @jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...

  5. @jsonfield注解_好了,不装了,撸个注解有什么难的!

    文章来源:https://mp.weixin.qq.com/s/z8qA8i3F8-SDbcTDMdJgjw 作者:沉默王二 注解是 Java 中非常重要的一部分,但经常被忽视也是真的.之所以这么说是 ...

  6. fastjson之@JSONField注解的几个的使用详细示范

    首先这个注解有个参数可以设置,具体是:ordinal,name,format,serialize,deserialize.等等,后面的不常用啊. 先看model类. package com.lxk.m ...

  7. @JSONField注解的作用

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

  8. java method 注释_Java注解

    Java注解 注解概述 3.注解 3.1.注解,或者叫做注释类型,英文单词是:Annotation 疑问:注解到底是干啥的????????? 3.2.注解Annotation是一种引用数据类型.编译之 ...

  9. 学妹问我Java枚举类与注解,我直接用这个搞定她!

    很多人问我学妹长什么样,不多说 上图吧! 学妹问我Java枚举类与注解,我直接一篇文章搞定! 一.枚举类 ① 自定义枚举类 ② enum关键字定义枚举类 ③ enum 枚举类的方法 ④ enum 枚举 ...

最新文章

  1. R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据、单的黑白主题theme_bw主题(theme)、默认的主题(theme)可视化数据
  2. C++_STL——map、multimap、set、multiset
  3. java应用线上一次故障诊断分析
  4. Fragment要点复习
  5. 安兔兔跑分可信吗_安兔兔安卓手机跑分性能榜公布:第一名实至名归?
  6. 前端学习(2995):vue+element今日头条管理--代码测试规范
  7. jar包与aar包的区别
  8. Qt on Android 蓝牙通信开发
  9. js 去除空格回车换行
  10. ssh相关命令Linux,Linux SSH常用命令 [长期更新]...
  11. WSGI、flup、fastcgi、web.py的关系
  12. 【算法笔记】输出st-en的所有路径(DAG--dfs)
  13. 数据库系统在计算机系统中的地位与作用,浅谈数据库设计在系统设计中的重要性...
  14. mysql 启动 spawn错误_supervisor ERROR (spawn error):错误解决
  15. 2013上半年,Google Chrome正式版最新版本,又增加什么小功能!
  16. 今天安利几个好用的软件给你
  17. 塔望食业洞察|植物肉行业发展趋势 品牌竞争格局及未来发展
  18. 【海大838】22年考研真题及解析
  19. Linux 文件系统原理 / 虚拟文件系统VFS
  20. 【keepass】利用keepassxc-browser浏览器扩展和keepassnatmsg插件实现密码自动填充(KeePassHttp-Connector/KeePassHttp)

热门文章

  1. Android EditText 换行 BUG (自动换行与限制行数)
  2. #笔记-面向对象基础知识
  3. jackson的使用
  4. 逻辑AND()运算符,带C语言示例
  5. 基于ZYNQ-7000的AI加速器设计之GP接口的实现
  6. 仿联想商城laravel实战---2、后端页面搭建(验证码如何在页面中使用)
  7. 09高温假旅行——青烟蓬长大
  8. php 如何实现关键字查找,PHP如何实现多个关键词查询?
  9. window下安装webpack以及webpack-dev-server使用
  10. Android中SocketIo使用方法