json和对象之间转换,目前常见的三种方式,本人推荐使用Gson
1、Gson
2、jackson
3、fastjson
一、Gson
1、json转成对象
String jsonData="{'userid':'1001','username':'张三','usersex':'男'}";
Gson gson=new Gson();
Person person=gson.fromJson(jsonData,Person.class);
2、jsonlist转成list对象(或者map)
String jsonList="[{'userid':'1001','username':'张三','usersex':'男'},"
+ "{'userid':'1002','username':'李四','usersex':'男'},"
+ "{'userid':'1003','username':'王五','usersex':'男'}]";
Gson gson1=new Gson();
List<Person> list= gson1.fromJson(jsonList, new TypeToken<List<Person>>() {}.getType());
// 如果是map一样
List<Map> list= gson1.fromJson(typeParams, new TypeToken<List<Map>>() {}.getType());
3、对象、map、对象list转成json
Gson gson2=new Gson();
String str=gson2.toJson(list);
当我们json中名称和对象中不一致时需要转换名称,@SerializedName
@SerializedName("code")
private String password;
二、jackson
json转对象
static ObjectMapper objectMapper = new ObjectMapper();
ObjectMapper objectMapper = new ObjectMapper();
T t= objectMapper.readValue("json", T.class);
有时候我们json字符串中的name 和对象中不一致,需要在对象属性上加上 @JsonProperty("UserId")
@JsonProperty("UserId")
private List<String> userIds;
三、fastjson
json转对象
// 对象
T t= JSONObject.parseObject("jsonstring", T.class);
// map
Map<String, Object> map = JSONObject.parseObject(handleTime, Map.class);
对象转JSON
String userJson = JSON.toJSONString(user);
注意如果是用的fastjson,属性上改变名字要是用@JSONField
@JSONField(name = "DefaultReadOnly")
private Object DefaultReadOnly;