您的位置:

从Java实体转JSON:探究转换方式与实践应用

一、实体转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;
    }

}
   
  
从Java实体转JSON:探究转换方式与实践应用

2023-05-19
使用Java实现JSON字符串转换的最佳实践

2023-05-19
pythonjson转model,python json转换

本文目录一览: 1、【Python】浅谈python中的json 2、用python怎么实现json和xml的互转 3、django model如何转换成json? 4、在python中 如何实现将一

2023-12-08
python中json解析转换,python 对象转json

2022-11-25
python转成json,python数据转换

2022-11-24
java客户端学习笔记(java开发笔记)

2022-11-14
java笔记,尚硅谷java笔记

2022-12-01
使用java将json字符串转换成实体类,java json

2023-01-04
java把实体类转成json(java将实体类转为json)

本文目录一览: 1、java对象实体与json之间的转换 2、java实体类怎么转换成json。 3、java怎么把数据转成json 数组 4、如何将数据实体转换为 JSON 字符串 5、java中怎

2023-12-08
java基础知识学习笔记一,Java基础笔记

2022-11-21
包含pythonstrings转json的词条

本文目录一览: 1、【Python】浅谈python中的json 2、python3 对象 |字典|json|yaml|字符串 相互转化 3、python 字符串转 json 4、python字符串如

2023-12-08
Java实体类转JSON完全解析

2023-05-19
java学习笔记(java初学笔记)

2022-11-14
python转json方法,python html转json

本文目录一览: 1、python3 对象 |字典|json|yaml|字符串 相互转化 2、python之json格式转化 3、Python爬虫(七)数据处理方法之JSON 4、python怎么转化成

2023-12-08
关于python数据转换为json的信息

2022-11-12
json转为java,json转为java实体类

本文目录一览: 1、实际开发中,入参json数组如何转换为java数组 2、json数组转java对象怎么转 3、怎么将json对象转换成一个java对象 实际开发中,入参json数组如何转换为jav

2023-12-08
c++json转结构体(c++结构体转json字符串)

本文目录一览: 1、怎样用C#把JSON数据转换为list或数组 2、怎样用C#把JSON数据转换为list或数组? 3、用C#语言将json格式数据转成json对象 4、go语言 一串json 如何

2023-12-08
java笔记,大学java笔记

2022-11-28
JSON转Bean的方法与实现

2023-05-17
将Android字符串转换成JSON格式的实用方法

2023-05-14