目录
不使用循环的方式,枚举JSON、String、Map、Bean、List<Map>、List<Bean>之间互转的方法。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
public void stringToJSONObject() {
String str = "{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789}";
/*方法一*/
JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(str);
System.out.println(jsonObject);
/*方法二*/
JSONObject jsonObject1 = com.alibaba.fastjson2.JSON.parseObject(str, JSONObject.class);
System.out.println(jsonObject1);
/*方法三*/
com.alibaba.fastjson2.JSONObject jsonObject2 = com.alibaba.fastjson2.JSONObject.parseObject(str);
System.out.println(jsonObject2);
/*方法四*/
com.alibaba.fastjson2.JSONObject jsonObject3 = com.alibaba.fastjson2.JSONObject.parseObject(str, com.alibaba.fastjson2.JSONObject.class);
System.out.println(jsonObject3);
}
public void stringToJsonArray(){
String json = "[{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789},{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789}]";
/*方法一*/
com.alibaba.fastjson2.JSONArray jsonArray = com.alibaba.fastjson2.JSONArray.parseArray(json);
System.out.println(jsonArray);
/*方法二(不推荐)*/
com.google.gson.Gson gson = new Gson();
JSONArray jsonArray2 = gson.fromJson(json, new TypeToken<JSONArray>() {
}.getType());
System.out.println(jsonArray2);
/*方法三*/
com.alibaba.fastjson2.JSONArray jsonArray3 = new com.alibaba.fastjson2.JSONArray(json);
System.out.println(jsonArray3);
}
public void stringToBean() {
String str = "{\"id\":123456789,\"name\":\"张三\",\"sex\":true}";
/*方法一*/
Student student = com.alibaba.fastjson2.JSON.parseObject(str, Student.class);
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
System.out.println("---------------------------------------------");
/*方法二*/
Gson gson = new Gson();
Student student2 = gson.fromJson(str, new TypeToken<Student>() {
}.getType());
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
}
/**
* String(JSON格式)转Map
*/
public void stringToMap(){
String str="{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789}";
/*方法一*/
Gson gson = new Gson();
Map<String, Object> map= gson.fromJson(str, new TypeToken<Map<String, Object>>() {
}.getType());
System.out.println(map);
/*方法二*/
Map<String,Object> map2 = com.alibaba.fastjson2.JSON.parseObject(str, Map.class);
System.out.println(map2);
}
public void stringToList() {
String json = "[{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789},{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789}]";
/*方法一*/
List<Map<String,Object>> list = com.alibaba.fastjson2.JSON.parseObject(json, List.class);
list.forEach(map->{
map.forEach((k,v)->{
System.out.println(k+"="+v);
});
});
System.out.println("---------------------------------------------");
/*方法二*/
Gson gson = new Gson();
List<Map<String, Object>> list2= gson.fromJson(json, new TypeToken<List<Map<String, String>>>() {
}.getType());
list2.forEach(map->{
map.forEach((k,v)->{
System.out.println(k+"="+v);
});
});
}
public void stringToListBean(){
String str="[{\"id\":123456789,\"name\":\"张三\",\"sex\":true},{\"id\":123456780,\"name\":\"李四\",\"sex\":false},{\"id\":123456781,\"name\":\"王五\",\"sex\":true}]";
com.google.gson.Gson gson = new Gson();
List<Student> list = gson.fromJson(str, new TypeToken<List<Student>>() {
}.getType());
list.forEach(
student -> {
System.out.println(student.getId());
System.out.println(student.getName());
System.out.println(student.isSex());
System.out.println("--------------------");
}
);
}
public static void main(String[] args) throws UnsupportedEncodingException {
String jsonString = "[{hours=现在, wea=多云, wea_img=yun, tem=14, win=东北风, win_speed=5级, aqi=良, aqinum=70},{hours=现在, wea=多云, wea_img=yun, tem=14, win=东北风, win_speed=5级, aqi=良, aqinum=70}]";
com.google.gson.Gson gson = new Gson();
java.lang.reflect.Type listType = new com.google.gson.reflect.TypeToken<List<Map<String, Object>>>() {
}.getType();
List<Map<String, Object>> resultList = gson.fromJson(jsonString, listType);
System.out.println(resultList);
}
public void jsonObjectToString() {
String str = "{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789}";
JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(str);
/*方法一*/
String s = jsonObject.toString();
System.out.println(s);
/*方法二*/
String s1 = com.alibaba.fastjson2.JSONObject.toJSONString(jsonObject);
System.out.println(s1);
}
public void jsonObjectToMap() {
String str = "{\"create_time\":\"2022-01-01 23:59:59\",\"name\":\"张三\",\"id\":123456789}";
JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(str);
/*方法一*/
Map map = JSON.parseObject(jsonObject.toJSONString(), Map.class);
System.out.println(map);
/*方法二*/
Map map1 = com.alibaba.fastjson2.JSONObject.parseObject(jsonObject.toJSONString(), Map.class);
System.out.println(map1);
/*方法三*/
Map map2 = JSON.parseObject(jsonObject.toJSONString(), Map.class);
System.out.println(map2);
/*方法四*/
Gson gson = new Gson();
Map<String, Object> map3 = gson.fromJson(jsonObject.toJSONString(), new TypeToken<Map<String, String>>() {
}.getType());
System.out.println(map3);
}
public void jsonObjectToBean() {
String str = "{\"id\":123456789,\"name\":\"张三\",\"sex\":true}";
com.alibaba.fastjson2.JSONObject jsonObject = JSON.parseObject(str);
System.out.println(jsonObject);
/*方法一*/
Student student = com.alibaba.fastjson2.JSON.parseObject(jsonObject.toString(), Student.class);
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
System.out.println("---------------------------------------------");
/*方法二*/
Student student1 = com.alibaba.fastjson2.JSONObject.parseObject(jsonObject.toJSONString(), Student.class);
System.out.println(student1.getId());
System.out.println(student1.isSex());
System.out.println(student1.getName());
System.out.println("---------------------------------------------");
/*方法三*/
Student student2 = JSON.parseObject(jsonObject.toJSONString(), Student.class);
System.out.println(student2.getId());
System.out.println(student2.isSex());
System.out.println(student2.getName());
System.out.println("---------------------------------------------");
/*方法四*/
Gson gson = new Gson();
Student student3 = gson.fromJson(jsonObject.toString(), new TypeToken<Student>() {
}.getType());
System.out.println(student3.getId());
System.out.println(student3.isSex());
System.out.println(student3.getName());
}
public void jsonArrayToList() {
Map<String, Object> map = new HashMap<>();
map.put("id", 123456789);
map.put("name", "张三");
map.put("create_time", "2022-01-01 23:59:59");
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 123456789);
map2.put("name", "张三");
map2.put("create_time", "2022-01-01 23:59:59");
ArrayList<Object> list = new ArrayList<>();
list.add(map);
list.add(map2);
com.alibaba.fastjson.JSONArray jsonArray = new com.alibaba.fastjson.JSONArray(list);
/*方法一*/
com.google.gson.Gson gson = new Gson();
List<Map<String, String>> listMap = gson.fromJson(jsonArray.toJSONString(), new TypeToken<List<Map<String, String>>>() {
}.getType());
listMap.forEach(
item -> {
item.forEach(
(k, v) -> {
System.out.println(k + "=" + v);
}
);
}
);
System.out.println("--------------------------");
/*方法二(不推荐,之所以写出来是因为看到网上很多博客用了两层循环嵌套去实现这个功能,个人认为不必如此麻烦。)*/
List<Map<String, Object>> result = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
Map<String, Object> m = JSON.parseObject(jsonArray.getJSONObject(i).toJSONString(), Map.class);
result.add(map);
}
result.forEach(
item -> {
item.forEach(
(k, v) -> {
System.out.println(k + "=" + v);
}
);
}
);
System.out.println("--------------------------");
/*方法三(推荐)*/
List<Map<String,Object>> list1 = com.alibaba.fastjson2.JSON.parseObject(jsonArray.toJSONString(), List.class);
list1.forEach(
item -> {
item.forEach(
(k, v) -> {
System.out.println(k + "=" + v);
}
);
}
);
System.out.println("--------------------------");
/*方法四(推荐)*/
List<Map<String,Object>> list2 = com.alibaba.fastjson2.JSONObject.parseObject(jsonArray.toJSONString(), List.class);
list2.forEach(
item -> {
item.forEach(
(k, v) -> {
System.out.println(k + "=" + v);
}
);
}
);
}
public void jsonArrayToListBean() {
Map<String, Object> map = new HashMap<>();
map.put("id", 123456789);
map.put("name", "李四");
map.put("sex", false);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 123456789);
map2.put("name", "张三");
map2.put("sex", true);
ArrayList<Object> list = new ArrayList<>();
list.add(map);
list.add(map2);
com.alibaba.fastjson.JSONArray jsonArray = new com.alibaba.fastjson.JSONArray(list);
/*方法一(推荐)*/
com.google.gson.Gson gson = new Gson();
List<Student> listMap = gson.fromJson(jsonArray.toJSONString(), new TypeToken<List<Student>>() {
}.getType());
listMap.forEach(
student->{
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
}
);
System.out.println("--------------------------");
/*方法二(不推荐,之所以写出来是因为看到网上很多博客用了两层循环嵌套去实现这个功能,个人认为不必如此麻烦。)*/
List<Student> result = new ArrayList<>();
for(int i=0;i<jsonArray.size();i++){
Student stu = JSON.parseObject(jsonArray.getJSONObject(i).toJSONString(), Student.class);
result.add(stu);
}
result.forEach(
student->{
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
}
);
}
public void mapToString() {
Map<String, Object> map = new HashMap<>();
map.put("id", 123456789);
map.put("name", "张三");
map.put("create_time", "2022-01-01 23:59:59");
Gson gson = new Gson();
/*方法一(优于方法二)*/
String json = gson.toJson(map, Map.class);
System.out.println(json);
/*方法二*/
String json2 = gson.toJson(map);
System.out.println(json2);
/*方法三*/
String str = com.alibaba.fastjson2.JSON.toJSONString(map);
System.out.println(str);
/*方法四*/
String s = com.alibaba.fastjson2.JSONObject.toJSONString(map);
System.out.println(s);
/*方法五*/
String s1 = com.alibaba.fastjson.JSON.toJSONString(map);
System.out.println(s1);
/*方法五*/
String s2 = com.alibaba.fastjson.JSONObject.toJSONString(map);
System.out.println(s2);
}
public void mapToBean() {
HashMap<String, Object> map = new HashMap<>();
map.put("id",123456789L);
map.put("name","张三");
map.put("sex",true);
/*方法一:使用commons-beanutils,注意:这里的id长度过长要加L表示Long类型。*/
try {
Student student = mapToBean(map, Student.class);
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
}
/*方法二:使用jackson-databind,这里的id可以不用加L。*/
ObjectMapper mapper = new ObjectMapper();
try {
Student student = mapper.readValue(com.alibaba.fastjson2.JSON.toJSONString(map), Student.class);
System.out.println(student.getId());
System.out.println(student.isSex());
System.out.println(student.getName());
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public void mapToJsonObject() {
Map<String, Object> map = new HashMap<>();
map.put("id", 123456789);
map.put("name", "张三");
map.put("create_time", "2022-01-01 23:59:59");
Gson gson = new Gson();
/*方法一(优于方法二)*/
JsonElement jsonElement = gson.toJsonTree(map, Map.class);
com.google.gson.JsonObject jsonObject = jsonElement.getAsJsonObject();
System.out.println(jsonObject);
/*方法二*/
JsonElement jsonElement2 = gson.toJsonTree(map);
com.google.gson.JsonObject jsonObject2 = jsonElement2.getAsJsonObject();
System.out.println(jsonObject2);
/*方法三*/
com.alibaba.fastjson.JSONObject jsonObject3 = new com.alibaba.fastjson.JSONObject(map);
System.out.println(jsonObject3);
/*方法四*/
String s = com.alibaba.fastjson2.JSON.toJSONString(map);
JSONObject jsonObject4 = com.alibaba.fastjson.JSONObject.parseObject(s);
System.out.println(jsonObject4);
/*方法五*/
com.alibaba.fastjson2.JSONObject jsonObject1 = new com.alibaba.fastjson2.JSONObject(map);
System.out.println(jsonObject1);
/*方法六*/
com.alibaba.fastjson2.JSONObject jsonObject5 = com.alibaba.fastjson2.JSON.parseObject(JSON.toJSONString(map));
System.out.println(jsonObject5);
}
public void listToString() {
Map<String, Object> map = new HashMap<>();
map.put("id", 123456789);
map.put("name", "张三");
map.put("create_time", "2022-01-01 23:59:59");
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 123456789);
map2.put("name", "张三");
map2.put("create_time", "2022-01-01 23:59:59");
ArrayList<Object> list = new ArrayList<>();
list.add(map);
list.add(map2);
/*方法一*/
String str = com.alibaba.fastjson2.JSON.toJSONString(list);
System.out.println(str);
/*方法二*/
String s = com.alibaba.fastjson.JSONObject.toJSONString(list);
System.out.println(s);
Gson gson = new Gson();
/*方法三(优于方法四)*/
String json = gson.toJson(list,List.class);
System.out.println(json);
/*方法四*/
String json2 = gson.toJson(list);
System.out.println(json2);
}
public void listToJsonArray() {
Map<String, Object> map = new HashMap<>();
map.put("id", 123456789);
map.put("name", "张三");
map.put("create_time", "2022-01-01 23:59:59");
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 123456789);
map2.put("name", "张三");
map2.put("create_time", "2022-01-01 23:59:59");
ArrayList<Object> list = new ArrayList<>();
list.add(map);
list.add(map2);
/*方法一*/
JSONArray jsonArray = new com.alibaba.fastjson.JSONArray(list);
for (Object o : jsonArray) {
System.out.println(o);
}
/*方法二*/
com.alibaba.fastjson.JSONArray jsonArray1 = com.alibaba.fastjson.JSONArray.parseArray(com.alibaba.fastjson2.JSON.toJSONString(list));
for (Object o : jsonArray1) {
System.out.println(o);
}
/*方法三*/
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(list, com.alibaba.fastjson.JSONArray.class);
JsonArray asJsonArray = jsonElement.getAsJsonArray();
for (JsonElement element : asJsonArray) {
System.out.println(element);
}
/*方法四*/
com.alibaba.fastjson2.JSONArray jsonArray2 = new com.alibaba.fastjson2.JSONArray(list);
for (Object o : jsonArray2) {
System.out.println(o);
}
}
public void listBeanToString() {
List<Student> list = new ArrayList<>();
list.add(new Student(123456789L, "张三", true));
list.add(new Student(123456780L, "李四", false));
list.add(new Student(123456781L, "王五", true));
/*方法一*/
String s = com.alibaba.fastjson2.JSON.toJSONString(list);
System.out.println(s);
/*方法二*/
Gson gson = new Gson();
String s1 = gson.toJson(list);
System.out.println(s1);
/*方法三(优于方法二)*/
String s2 = gson.toJson(list, List.class);
System.out.println(s2);
/*方法四*/
String s3 = com.alibaba.fastjson.JSON.toJSONString(list);
System.out.println(s3);
}
public void listBeanToJsonArray() {
List<Student> list = new ArrayList<>();
list.add(new Student(123456789L, "张三", true));
list.add(new Student(123456780L, "李四", false));
list.add(new Student(123456781L, "王五", true));
/*方法一*/
JSONArray jsonArray = new com.alibaba.fastjson.JSONArray(list);
System.out.println(jsonArray);
/*方法二*/
JSONArray jsonArray1 = com.alibaba.fastjson.JSONArray.parseArray(com.alibaba.fastjson2.JSON.toJSONString(list));
System.out.println(jsonArray1);
/*方法三*/
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(list, com.alibaba.fastjson.JSONArray.class);
JsonArray asJsonArray = jsonElement.getAsJsonArray();
System.out.println(asJsonArray);
/*方法四*/
com.alibaba.fastjson2.JSONArray jsonArray2 = new com.alibaba.fastjson2.JSONArray(list);
System.out.println(jsonArray2);
}
public void beanToMap(){
Student stu = new Student(123456789L, "张三", true);
/*方法一:使用commons-beanutils,不循环只能转Map<String, String>*/
try {
Map<String, String> map = BeanUtils.describe(stu);
System.out.println("方法一:"+map);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
/*方法二:使用jackson-databind*/
Map<String, Object> map = new ObjectMapper().convertValue(stu, new com.fasterxml.jackson.core.type.TypeReference<Map<String, Object>>() {});
System.out.println("方法二:"+map);
/*方法三:使用commons-beanutils*/
BeanMap beanMap = BeanMap.create(stu);
Map<String, Object> map2 = new HashMap<>();
beanMap.forEach((k, v) -> {
map2.put(k.toString(), v);
});
System.out.println("方法三:"+map2);
}
public void beanToString(){
Student stu = new Student(123456789L, "张三", true);
/*方法一*/
String s = com.alibaba.fastjson2.JSON.toJSONString(stu);
System.out.println(s);
/*方法二*/
String s2 =com.alibaba.fastjson.JSON.toJSONString(stu);
System.out.println(s2);
/*方法三*/
Gson gson = new Gson();
String s3 = gson.toJson(stu);
System.out.println(s3);
}
public void beanToJsonObject(){
Student stu = new Student(123456789L, "张三", true);
/*方法一*/
com.alibaba.fastjson2.JSONObject jsonObject = com.alibaba.fastjson2.JSON.parseObject(com.alibaba.fastjson2.JSON.toJSONString(stu), com.alibaba.fastjson2.JSONObject.class);
System.out.println(jsonObject);
/*方法二*/
com.alibaba.fastjson2.JSONObject jsonObject2 = com.alibaba.fastjson2.JSON.parseObject(com.alibaba.fastjson2.JSON.toJSONString(stu), com.alibaba.fastjson2.JSONObject.class);
System.out.println(jsonObject2);
/*方法三*/
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(stu);
JsonObject asJsonObject = jsonElement.getAsJsonObject();
System.out.println(asJsonObject);
/*方法四*/
com.alibaba.fastjson.JSONObject jsonObject3 = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson.JSON.toJSONString(stu), com.alibaba.fastjson.JSONObject.class);
System.out.println(jsonObject3);
/*方法五*/
com.alibaba.fastjson.JSONObject jsonObject4 = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson.JSON.toJSONString(stu), com.alibaba.fastjson.JSONObject.class);
System.out.println(jsonObject4);
}