一、实体转JSONObject
实体是Java中常见的数据模型,而JSONObject是JSON的一种对象表示方式。将实体转换成JSONObject是一种非常常见的操作。下面将介绍三种不同的实现方式。
1. 使用Jackson库实现实体转JSONObject
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
JSONObject json = new JSONObject(ow.writeValueAsString(obj));
使用Jackson库的好处是可以自定义一些设置。
例如:ifSerializationInclusion(JsonInclude.Include.NON_NULL)忽略值为空的属性;ifFailOnUnknownProperties(false)忽略未知属性。
2. 使用GSON库实现实体转JSONObject
Gson gson = new Gson();
JSONObject json = new JSONObject(gson.toJson(obj));
使用GSON库的好处是既能读取JSON数据,也能写入JSON数据。
3. 使用JSONObject实现实体转JSONObject
JSONObject jsonObject = (JSONObject) JSON.toJSON(obj);
使用JSONObject的好处是无需导入第三方库,但是需要注意的是,实体类必须有get和set方法。
二、实体类转JSON字符串
实体转换成JSON字符串是一种更加常见的操作。下面将介绍三种不同的实现方式。
1. 使用Jackson库实现实体类转JSON字符串
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(obj);
使用Jackson库的好处是可以输出格式化的JSON字符串。
2. 使用GSON库实现实体类转JSON字符串
Gson gson = new Gson();
String jsonStr = gson.toJson(obj);
使用GSON库的好处是可以自定义输出格式。
3. 使用JSONObject实现实体类转JSON字符串
String jsonStr = JSON.toJSONString(obj);
该方式只需要导入alibaba fastjson库即可,也可以自定义输出格式。
三、实际应用场景
实体转JSON的应用非常广泛,下面以Spring Boot的接口返回结果为例,演示在实践中如何应用。
在Spring Boot中,我们通常需要将返回的结果转换成JSON字符串返回给前端。如下面的代码:
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
return JSON.toJSONString(user);
}
同时,我们也可以将返回结果封装成一个固定的数据结构,如下所示:
public class Result {
private Integer code;
private String message;
private T data;
//... 省略各种get和set方法
}
@GetMapping("/user/{id}")
public Result getUser(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
return new Result(200, "查询成功", user);
}
以上代码使用fastjson库将结果封装成JSON格式返回给前端,并且给予了特定的响应码和提示信息
四、小结
本文从实现的角度出发,详细阐述了Java实体转JSON的三种实现方式,并在实际场景中展示了优秀的应用案例。在实际应用中,根据实际情况选取适合的实现方式能够使你的代码更加规范和高效。
示例代码:
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import org.json.JSONObject;
import com.google.gson.Gson;
public class User {
private Long id;
private String name;
private Integer age;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(user);
return jsonStr;
}
@GetMapping("/user/gson/{id}")
public String getUserByGson(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
Gson gson = new Gson();
String jsonStr = gson.toJson(user);
return jsonStr;
}
@GetMapping("/user/fastjson/{id}")
public String getUserByFastJson(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
String jsonStr = JSON.toJSONString(user);
return jsonStr;
}
public class Result {
private Integer code;
private String message;
private T data;
//... 省略各种get和set方法
}
@GetMapping("/user/result/{id}")
public Result getUserByResult(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
return new Result(200, "查询成功", user);
}
@GetMapping("/user/jsonobject/{id}")
public JSONObject getUserByJSONObject(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
JSONObject json = new JSONObject(ow.writeValueAsString(user));
return json;
}
@GetMapping("/user/gsonobject/{id}")
public JSONObject getUserByGSONJSONObject(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
Gson gson = new Gson();
JSONObject json = new JSONObject(gson.toJson(user));
return json;
}
@GetMapping("/user/jsonobjectEx/{id}")
public JSONObject getUserByJSONObjectEx(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
JSONObject jsonObject = (JSONObject) JSON.toJSON(user);
return jsonObject;
}
}原创文章,作者:BARM,如若转载,请注明出处:https://www.506064.com/n/133456.html
微信扫一扫
支付宝扫一扫