关于java:JSON-与-Java-对象之间的转化

2次阅读

共计 3682 个字符,预计需要花费 10 分钟才能阅读完成。

前言

在当初的日常开发中,不论前端还是后端,JSON 格局的数据是用得比拟多的,甚至能够说无处不在。

接触最多的就是 POST 申请中传递的数据个别以 JSON 的格局放在申请体中,而且服务端各种 API 返回的数据,在响应体中也根本都是以 JSON 格局的数据进行返回的,这也是 RESTful 格调的体现之一。

当然,不止是申请与响应的过程中应用到 JSON,在某些业务场景下也是须要用到 JSON 的, 特地是 JSON 与 Java 对象之间的转化

所以,对于 Java 开发的咱们来说,JSON 格局的数据与 Java 对象之间的转化是必会的。

转化的工具

支流的转化工具有如下几种,个别我的项目中倡议只选其中一种,目前好评最多的感觉就是 Jackson 了。

  • Jackson
  • FastJson
  • Gson
  • Hutool

筹备的 JSON 字符串和 List

为了不便演示,这里给出一个 JSON 字符串:

String jsonStr = "{\"name\": \"GTA5\", \"price\": 54.5}";

这里给出一个 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

咱们须要借助 Jackson 提供的 ObjectMapper 对象来实现转化:

ObjectMapper objectMapper = new ObjectMapper();

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

应用 readValue 办法,第一个参数是 JSON 字符串,第二个参数是转化的指标类的类型。

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

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

应用 writeValueAsString 办法,承受一个 Java 对象,返回一个 JSON 字符串。

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

将 List 转成 JSON 字符串:writeValueAsString

同样应用 writeValueAsString 办法。

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

将 JSON 字符串 转成 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 办法。

任意对象转成 JSON,则应用 toJsonStr 办法。

最初的最初

由自己程度所限,不免有谬误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!

最初,谢谢你看到这里,谢谢你认真对待我的致力,心愿这篇博客对你有所帮忙!

你轻轻地点了个赞,那将在我的心里世界削减一颗亮堂而夺目的星!

正文完
 0