java jsonfield_FastJson 使用@JSONField注解和@JSONCreator指定构造方法
在某些应用场景下,如果需要定制序列化输出,比如说,希望序列化采用之后采用"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指定构造方法相关推荐
- java jsonfield_FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
- java jsonfield_fastjson使用-- @JSONField使用(转)
@JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上. 我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会 ...
- JSONField 注解的使用
package com.example.springboot;import com.alibaba.fastjson.JSON; import org.junit.jupiter.api.Test;i ...
- java jsonfield_关于fastjson的@JSONField注解的一些问题(详解)
@jsonfield 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用field @jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...
- @jsonfield注解_好了,不装了,撸个注解有什么难的!
文章来源:https://mp.weixin.qq.com/s/z8qA8i3F8-SDbcTDMdJgjw 作者:沉默王二 注解是 Java 中非常重要的一部分,但经常被忽视也是真的.之所以这么说是 ...
- fastjson之@JSONField注解的几个的使用详细示范
首先这个注解有个参数可以设置,具体是:ordinal,name,format,serialize,deserialize.等等,后面的不常用啊. 先看model类. package com.lxk.m ...
- @JSONField注解的作用
@JSONField注解可以用在方法(method),属性(field)以及方法上的参数(parameter)上.JSONField中的name属性用来指定JSON串中key的名称 @JSONFiel ...
- java method 注释_Java注解
Java注解 注解概述 3.注解 3.1.注解,或者叫做注释类型,英文单词是:Annotation 疑问:注解到底是干啥的????????? 3.2.注解Annotation是一种引用数据类型.编译之 ...
- 学妹问我Java枚举类与注解,我直接用这个搞定她!
很多人问我学妹长什么样,不多说 上图吧! 学妹问我Java枚举类与注解,我直接一篇文章搞定! 一.枚举类 ① 自定义枚举类 ② enum关键字定义枚举类 ③ enum 枚举类的方法 ④ enum 枚举 ...
最新文章
- R语言ggplot2可视化设置不同的图像主题(theme):使用各种不同的主题(theme)可视化数据、单的黑白主题theme_bw主题(theme)、默认的主题(theme)可视化数据
- C++_STL——map、multimap、set、multiset
- java应用线上一次故障诊断分析
- Fragment要点复习
- 安兔兔跑分可信吗_安兔兔安卓手机跑分性能榜公布:第一名实至名归?
- 前端学习(2995):vue+element今日头条管理--代码测试规范
- jar包与aar包的区别
- Qt on Android 蓝牙通信开发
- js 去除空格回车换行
- ssh相关命令Linux,Linux SSH常用命令 [长期更新]...
- WSGI、flup、fastcgi、web.py的关系
- 【算法笔记】输出st-en的所有路径(DAG--dfs)
- 数据库系统在计算机系统中的地位与作用,浅谈数据库设计在系统设计中的重要性...
- mysql 启动 spawn错误_supervisor ERROR (spawn error):错误解决
- 2013上半年,Google Chrome正式版最新版本,又增加什么小功能!
- 今天安利几个好用的软件给你
- 塔望食业洞察|植物肉行业发展趋势 品牌竞争格局及未来发展
- 【海大838】22年考研真题及解析
- Linux 文件系统原理 / 虚拟文件系统VFS
- 【keepass】利用keepassxc-browser浏览器扩展和keepassnatmsg插件实现密码自动填充(KeePassHttp-Connector/KeePassHttp)