首页 > 编程语言 >JSON 与 Java 对象之间的转化

JSON 与 Java 对象之间的转化

时间:2023-03-27 23:24:11浏览次数:29  
标签:Java 对象 List Game 转化 JSON 字符串

前言

在现在的日常开发中,不管前端还是后端,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 方法。

最后的最后

由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!

最后,谢谢你看到这里,谢谢你认真对待我的努力,希望这篇博客对你有所帮助!

你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

标签:Java,对象,List,Game,转化,JSON,字符串
From: https://www.cnblogs.com/god23bin/p/json-to-java.html

相关文章

  • 类中转对应json结构
    一、实体类List对应JSONArray[],对象对应JSONObject{}@Data@ApiModel(description="Department")@Document("Department")publicclassDepartmentextendsBaseMon......
  • apollo配置json
    #json串原文[{"username":"李小刚","sex":"男"},{"username":"苗翠花","sex":"女"}]publicclassMyDTO{privateStringusername;privateStringsex;......
  • Java算法学习
    Java算法树通常是指数据结构中的树,它是一种非线性的数据结构,由节点组成,每个节点包含一个值和指向其他节点的引用。在算法中,树被广泛应用,因为它们具有以下优点:树可以用于......
  • 《Java》学习随笔 4、运算符
    4Java运算符运算符分成以下几组:算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 4.1算术运算符+加法-相加运算符两侧的值A+B等于......
  • java基础4 位运算的一些例子
    packageendual3;publicclassMainApp{ /** *位运算 *java语言支持整数类型的数据的位运算,位运算操作符包括: *1.&--与运算,二元操作符号,对两个操作元的每......
  • 大水计划之DEA JAVA
    Java调用exe自动输入命令DEAP2.1软件是数据包络分析(DEA)软件.小弟用Eclipse平台实现B/S架构,需要客户端通过调用服务器端deap.exe(下图)软件,在服务器端实现数据处理后,显示到......
  • Linux下 Java 读取文件路径
    一般文件路径在windows中用\表示,但是在其他系统平台下比如linux中就不是\所以java给我们提供了一个与平台无关的表示路径的常量File.separator在windows中则表示\比......
  • JAVA 的注释写法
    Java注释的规范写法 一.Java文档//注释一行/*......*/注释若干行/**......*/注释若干行,并写入javadoc文档通常这种注释的多行写法如下:/***.........*..............
  • java 并发库 Future 和 Collable的使用
    packageendual;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.ExecutorService;importjava.......
  • java wait() notyfy()的使用
    我们知道,并发的编程在企业中用的很多,对于并发的学习是很重要的。现在我们想从程序上给大家一个分析,在我写这个程序的时候,只知道wait()是线程等待,notify是唤醒线程,还有一个no......