fastjson将json字符串转化为java对象
一、导入一个fastjson的jar包
在pom.xml里加上这个依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
二、Json字符串格式
这个例子中的json中包含了json对象和数组
{
"result": true,
"data": {
"statusCode": 200,
"extra": "请求成功"
},
"missons": [
{
"id": 10,
"publishTime": "2020-3-10",
"label": "实习",
"money": 10,
"deadline": "2020-3-30",
"title": "找人"
},
{
"id": 11,
"state": 0,
"publishTime": "2020-3-10",
"money": 10,
"deadline": "2020-3-30",
"peopleAmount": 1,
"changeNumber": 0,
"title": "abc"
},
{
"id": 12,
"uid": 15,
"state": 0,
"publishTime": "2020-3-10",
"missionInfo": "求考研数学的资料",
"label": "考研",
"money": 10,
"existenceDate": "2020-3-25",
"deadline": "2020-3-30",
"peopleAmount": 0,
"changeNumber": 0,
"title": "找资料"
}
]
}
三、根据json的格式创建Java类
创建的Java类中的属性名字需要和json中的对应,这样才能实现自动的转换。
json中一个字段对应Java类的一个属性,json数组在Java可以使用List表示,一个json对象用一个类表示
public class JsonTest {
private String result;
private Data data;
private List<Misson> missions;
}
data对象
public class Data {
private String statusCode;
private String extra;
}
missons数组
public class Misson {
private String mid;
private String state;
private String title;
private String publishTime;
private String missionInfo;
private String label;
private String money;
private String existenceDate;
private String deadline;
private String peopleAmount;
private String changeNumber;
}
四、给java类的所有属性添加setter方法
在转换的过程中发现,如果没有添加setter方法,转换后得到的对象都为空。
因为转换过程中底层使用了PropertyDescriptor反射获取属性,通过PropertyDescriptor的getWriteMethod()方法获取属性的setter方法,最后通过setter方法给属性赋值,如果没有获取到setter方法(getWriteMethod()方法返回了null),就会导致后续无法执行赋值。
每个类都要加,这里只放一个的代码(Getter和Setter方法都加上了):
public class JsonTest {
private String result;
private Data data;
private List<Mission> missions;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public List<Misson> getMissions() {
return missions;
}
public void setMissions(List<Json> missions) {
this.missions = missions;
}
}
五、转换为java对象
传入一个json字符串,将它转换为JsonTest对象
public JsonTest parseJson(String json) {
JsonTest jsonTest = JSONObject.parseObject(json,JsonTest.class);
return jsonTest;
}
fastjson将json字符串转化为java对象的更多相关文章
- 取得远端相应Json并转化为Java对象(嵌套对象)二
工程下载链接:https://files.cnblogs.com/files/xiandedanteng/JsonParse20190929.rar 客户端: 如果从Restful Service取得 ...
- 将String类型的json字符串转换成java对象
1,import com.fasterxml.jackson.databind.ObjectMapper; ObjectMapper mapper = new ObjectMapper(); Mycl ...
- fastjson将json字符串转化成bean对象解析出错的检查方法
我的情况是:解析第一层数据成功,解析第二层嵌套的数据失败.如: { "response": { "resultcode": "0", &qu ...
- 取得远端相应Json并转化为Java对象一
JDK:1.8.0_212 IDE:STS4(Spring Tool Suit4 Version: 4.3.2.RELEASE) 工程下载:https://files.cnblogs.com/file ...
- json字符串转换成java对象
- FastJSON解析Json字符串(反序列化为List、Map)
在日常开发与数据库打交道的时候,常有以Json格式的字符串存储到数据库的情况,当在Java程序中获取到对应的Json格式的String字符串后,如何才能转换为我们想要的数据格式(比如转换成Java中的 ...
- java中将jsonObject字符串转化为Map对象
java中将jsonObject字符串转化为Map对象 1.我们这里使用json-lib包进行转换,可在http://json-lib.sourceforge.net/下载依赖于下面的jar包: ja ...
- nodejs将JSON字符串转化为JSON对象
如何将JSON字符串转化为JSON对象? JSON.parse(str) JSON是javascript的一个内置对象,提供了转换JSON对象与字符串互相转换的方法: 问题来了,道理我都懂 ...
- 转换成json字符串,与json字符串转换成java类型都要先转换成json对象
转换成json字符串,与json字符串转换成java类型都要先转换成json对象
随机推荐
- PHP丨PHP基础知识之数据类型
PHP的数据类型主要有三大种:(细分的话8小种) 一.标量数据类型 标量数据类型包括以下几种: (1)BOOLEAN:布尔型 布尔变量是PHP变量中最简单的: 它保存一个TRUE或者FALSE值: 其 ...
- Apollo配置中心的实战
31.携程 Apollo 配置中心介绍~1.mp4 32.Apollo核心概念~1.mp4 32.Apollo核心概念~1.mp4 每个应用需要有一个唯一的AppID 要在指定的机器上的server. ...
- JavaWeb网上图书商城完整项目--验证码
1.首先需要集成下面的jar 2.在web.xml配置验证码的servlet <?xml version="1.0" encoding="UTF-8"?& ...
- npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs'
npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs' 起因:原本安装node在C盘soft文件夹下,按node ...
- web如何测试
当我们负责web测试的时候,先了解B/S架构,然后分析如何开始执行测试,一般步骤:从功能测试,兼容测试,安全测试. 功能测试: 一.链接测试,链接是web应用系统的一个很重要的特征,主要是用于页面之间 ...
- JavaScript图形实例:窗花图案
1.窗花基本框线 设定曲线的坐标方程为: n=25; r=100; x=r/n*cos(5*θ)+r*cos(θ); y=r/n*sin(5*θ)+r*sin(θ); (0≤θ≤2π ...
- linux 测试端口是否可通
windows上一般用telnet 如telnet ip port linux上可以用telnet,跟windows一样 telnet ip port 也可以用wget:如:wget ip:port ...
- 标记下 'net 查壳/脱壳/加壳' 工具
net查壳工具 DotNet Id v1.0.0.3 该net程序集被“MaxToCode”加壳了(也不能完全相信). 加壳工具就是列表中列出的了. de4Net.exe脱壳工具版本de4dot-v3 ...
- 又一款开源图标库 CSS.GG,值得一用
嗨,我是 Martin,也叫老王,今天推荐一款好用的开源图标库. 我们平常找图标往往会去 iconfont 但是今天,我们看了 Martin 的文章之后,就会有一个新的选择--CSS.GG Githu ...
- 关于display的box和flex布局
关于二者的区别于联系,在知乎上看到有人这么回答的 flex 2012年的语法,也将是以后标准的语法,大部分浏览器已经实现了无前缀版本. box是2009年的语法,已经过时,是需要加上对应前缀的. 另外 ...