Conversion between JSON and Java objects

This article is participating in the "Golden Stone Project"

foreword

In today's daily development, regardless of front-end or back-end, data in JSON format is used more often, and it can even be said to be ubiquitous.

The most contacted is that the data passed in the POST request is generally placed in the request body in JSON format, and the data returned by various APIs on the server side are basically returned in JSON format in the response body. One of the manifestations of RESTful style.

Of course, JSON is not only used in the process of request and response, but also needs to be used in some business scenarios, especially the conversion between JSON and Java objects .

Therefore, for us in Java development, the conversion between data in JSON format and Java objects is inevitable.

conversion tool

There are several mainstream conversion tools as follows. It is recommended to choose only one of them for general projects. Currently, Jackson is the one with the most favorable comments.

  • Jackson

  • FastJson

  • Gson

  • Hutool

Prepared JSON String and List

For demonstration purposes, here is a JSON string:

String jsonStr = "{\"name\" : \"GTA5\", \"price\" : 54.5}";
复制代码

Here is one given List<Game>:

Game game1 = Game.builder().name("NBA2K23").price(new BigDecimal("198.0")).build();
Game game2 = Game.builder().name("Sim City4").price(new BigDecimal("22.5")).build();
List<Game> gameList = new ArrayList<>();
gameList.add(game1);
gameList.add(game2);
复制代码

Jackson

We need to use ObjectMapperthe object to complete the conversion:

ObjectMapper objectMapper = new ObjectMapper();
复制代码

Convert JSON string to Java object: readValue

Using readValuethe method , the first parameter is a JSON string, and the second parameter is the type of the converted target class.

// 将 JSON 字符串 转成 Java 对象
Game game = objectMapper.readValue(jsonStr, Game.class);
复制代码

Convert Java objects into JSON strings: writeValueAsString

Use writeValueAsStringthe method , which accepts a Java object and returns a JSON string.

// 将 Java 对象转成 JSON 字符串
String gameJson = objectMapper.writeValueAsString(game);
复制代码

Convert List to JSON string: writeValueAsString

Also use writeValueAsStringthe method .

// 将 List<Game> 转成 JSON 字符串
String gameListJson = objectMapper.writeValueAsString(gameList);
复制代码

Convert JSON string to List: readValue

使用 readValue 方法,第一个参数是 JSON 字符串,第二个参数是转化的目标 TypeReference(类型参照)对象,这里指定其泛型为 List<Game>

// 将 JSON 字符串 转成 List<Game>
List<Game> gameListFromJson = objectMapper.readValue(gameListJson, new TypeReference<List<Game>>() {});
复制代码

总结

从 JSON 到 Java 对象,使用 readValue 方法。

从 Java 对象到 JSON,使用 writeValueAsString 方法。

FastJson

我们需要借助 FastJson 提供的 JSONObject 对象来完成转化。

将 JSON 字符串 转成 Java 对象:parseObject

使用 parseObject 方法,将 JSON 字符串解析(转化)成 Java 对象,第一个参数是 JSON 字符串,第二个参数是目标类的类型。

// 将 JSON 字符串 转成 Java 对象
Game game = JSONObject.parseObject(jsonStr, Game.class);
复制代码

将 Java 对象转成 JSON 字符串:toJSONString

使用 toJSONString 方法,将 Java 对象直接转成 JSON 字符串,接受一个 Java 对象,返回对应的 JSON 字符串。

// 将 Java 对象转成 JSON 字符串
String gameJson = JSONObject.toJSONString(game);
复制代码

将 List 转成 JSON 字符串:toJSONString

同理,可以直接丢一个 List 对象给 toJSONString 方法,把 List 转成 JSON 字符串。

// 将 List<Game> 转成 JSON 字符串
String gameListJson = JSONObject.toJSONString(gameList);
复制代码

将 JSON 字符串 转成 List:parseArray

使用 parseArray 方法,将 JSON 字符串解析成 List。2.0 版本需要调用 toJavaList 方法,得到最后的 List

// 将 JSON 字符串 转成 List<Game>
// fastjson 1.2.x 版本:List<Game> gameListFromJson = JSONObject.parseArray(gameListJson, Game.class);
List<Game> gameListFromJson = JSONArray.parseArray(gameListJson).toJavaList(Game.class);
复制代码

总结

JSON 转成 Java Bean 使用 parseObject 方法,转成 List 使用 parseArray 方法。

任意对象转成 JSON,则使用 toJSONString 方法。

Gson

我们需要借助 Gson 对象来完成转化:

Gson gson = new Gson();
复制代码

将 JSON 字符串 转成 Java 对象:fromJson

使用 fromJson 方法,两个参数的定义也是和上面两个一样的。

// 将 JSON 字符串 转成 Java 对象
Game game = gson.fromJson(jsonStr, Game.class);
复制代码

将 Java 对象转成 JSON 字符串:toJson

使用 toJson 方法,接受一个 Java 对象,然后返回对应的 JSON 字符串。

// 将 Java 对象转成 JSON 字符串
String gameJson = gson.toJson(game);
复制代码

将 List 转成 JSON 字符串:toJson

List 也是同理,使用 toJson 方法。

// 将 List<Game> 转成 JSON 字符串
String gameListJson = gson.toJson(gameList);
复制代码

将 JSON 字符串 转成 List:fromJson

这里和 Jackson 的也是类似,第二个参数使用 TypeToken 对象指定转化的目标类型为 List<Game>

// 将 JSON 字符串 转成 List<Game>
List<Game> gameListFromJson = gson.fromJson(gameListJson, new TypeToken<List<Game>>() {}.getType());
复制代码

总结

从 JSON 到 Java 对象,使用 fromJson 方法。

从 Java 对象到 JSON,使用 toJson 方法。

Hutool

我们需要借助 Hutool 提供的 JSONUtil 对象来完成转化。

将 JSON 字符串 转成 Java 对象:toBean

使用 toBean 方法,还是同样的,接受的两个参数,一个字符串,一个目标类的类型。

// 将 JSON 字符串 转成 Java 对象
Game game = JSONUtil.toBean(jsonStr, Game.class);
复制代码

将 Java 对象转成 JSON 字符串:toJsonStr

使用 toJsonStr 方法,接受一个 Java 对象,返回一个 JSON 字符串。

// 将 Java 对象转成 JSON 字符串
String gameJson = JSONUtil.toJsonStr(game);
复制代码

将 List 转成 JSON 字符串:toJsonStr

同理,也是 toJsonStr 方法。

// 将 List<Game> 转成 JSON 字符串
String gameListJson = JSONUtil.toJsonStr(gameList);
复制代码

将 JSON 字符串 转成 List:toList

使用 toList 方法,和 toBean 方法接受的参数一样。

// 将 JSON 字符串 转成 List<Game>
List<Game> gameListFromJson = JSONUtil.toList(gameListJson, Game.class);
复制代码

总结

JSON 转成 Java Bean 使用 toBean 方法,转成 List 使用 toList 方法。

To convert any object into JSON, use toJsonStrthe method .

last of the last

Due to the limitation of my level, it is inevitable that there are mistakes and deficiencies. 屏幕前的靓仔靓女们If you find any, please point them out!

Finally, thank you for reading this, thank you for taking my efforts seriously, and hope this blog is helpful to you!

You gave a thumbs up lightly, that will add a bright and dazzling star to the world in my heart!

Guess you like

Origin juejin.im/post/7215207897520062501