这里介绍两种方式,可根据具体情况选择:
一、使用JSON类进行转换
1.多个对象转换:
JSONObject object = new JSONObject();
object.put("userName",userName);
object.put("SetType",SetType);
String json = object.toJSONString();
//获取JSONObject中的值
jsonObject.getString("userName");
2.单个对象转换:
//这里User可以是对象,集合,等
String json = JSON.toJSONString(User);
//转换json字符串,并获取值
JSONObject jsonObject = JSONObject.parseObject(json);
jsonObject.getString("name");//这里的name是User对象中的参数
二、使用阿里的fastjson进行转换
使用阿里提供的json工具类,需要先引入其依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.22</version>
</dependency>
1、单个对象转换
String json = "{\"userName\":\"张三\",\"sex\":\"男\"}";
User user = JSONObject.parseObject(json, User.class);
2、列表对象转换
String json = "[{\"userName\":\"张三\",\"sex\":\"男\"},{\"userName\":\"李四\",\"sex\":\"男\"}]";
List<User> User = JSONArray.parseArray(json, User.class);
//List<User> User = JSONArray.parseArray(JSON.parse(json).toString(), User.class);
注意事项:
对象转换JSON格式字符串时,参数字段是首字母会被转换成小写
如需要返回的json格式的参数字段是首字母大写,这里有两个解决方法:
一、将实体类private该为public(不推荐)
public class User{
public String UserName;
public String Sex;
public String getUserName() {
return UserName;
}
public void setUserName(String UserName) {
this.UserName= UserName;
}
public String getSex() {
return Sex;
}
public void setSex(String Sex) {
this.Sex= Sex;
}
}
这样可以解决问题,但是并不规范,这里并不推荐此种方式。
二、使用@JSONField注解方式(推荐)
public class User{
@JSONField(name = "UserName")
private String userName; //注意!首字母是小写
@JSONField(name = "Sex")
private String sex;
public String getUserName() {
return UserName;
}
public void setUserName(String UserName) {
this.UserName= UserName;
}
public String getSex() {
return Sex;
}
public void setSex(String Sex) {
this.Sex= Sex;
}
}
注意!参数,使用注解后,参数首字母不要写成大写,否则该注解不会生效,在转换时又会被自动转换为首字母小写~