前言在现在的日常开发中,无论前端还是后端,使用的都比较多的是JSON格式的数据,甚至可以说是无处不在。接触最多的是POST请求中传递的数据一般都是以JSON格式放在请求体中,而服务端各种API返回的数据基本都是在响应体中以JSON格式返回。RESTful风格的表现之一。当然,JSON不仅仅用在请求和响应的过程中,在一些业务场景中也需要用到,尤其是JSON和Java对象之间的转换。所以,对于Java开发的我们来说,JSON格式的数据与Java对象之间的转换是不可避免的。改造工具主流的改造工具有以下几种。在一般项目中,建议只选择其中一个。目前,杰克逊是获得好评最多的人。JacksonFastJsonGsonHutool准备的JSON字符串和List为了方便演示,这里给出一个JSON字符串:StringjsonStr="{\"name\":\"GTA5\",\"price\":54.5}";AList:Gamegame1=Game.builder().name("NBA2K23").price(newBigDecimal("198.0")).build();游戏game2=Game.builder().name("SimCity4").price(newBigDecimal("22.5")).build();ListgameList=newArrayList<>();gameList.add(game1);gameList.add(game2);Jackson我们需要使用Jackson提供的ObjectMapper对象来完成转换:ObjectMapperobjectMapper=newObjectMapper();JSON字符串转Java对象:readValue使用readValue方法,第一个参数为JSON字符串,第二个参数为转换类型的目标类。//将JSON字符串转换为Java对象Gamegame=objectMapper.readValue(jsonStr,Game.class);将Java对象转换为JSON字符串:writeValueAsString使用writeValueAsString方法接受一个Java对象并返回一个JSON字符串。//将Java对象转换为JSON字符串StringgameJson=objectMapper.writeValueAsString(game);将List转换为JSON字符串:writeValueAsString也使用writeValueAsString方法。//将List转换为JSON字符串StringgameListJson=objectMapper.writeValueAsString(gameList);JSON字符串转List:readValue使用readValue方法,第一个参数为JSON字符串,第二个参数为转换的目标TypeReference(类型引用)对象,这里指定其泛型类型为List。//将JSON字符串转换为ListListgameListFromJson=objectMapper.readValue(gameListJson,newTypeReference>(){});要从JSON汇总到Java对象,请使用readValue方法。从Java对象到JSON,使用writeValueAsString方法。对于FastJson,我们需要使用FastJson提供的JSONObject对象来完成转换。将JSON字符串转换为Java对象:parseObject使用parseObject方法将JSON字符串解析(转换)为Java对象。第一个参数是JSON字符串,第二个参数是目标类的类型。//将JSON字符串转换为Java对象Gamegame=JSONObject.parseObject(jsonStr,Game.class);Java对象转JSON字符串:toJSONString使用toJSONString方法直接将Java对象转JSON字符串,接受一个Java对象,返回对应的JSON字符串。//将Java对象转换为JSON字符串StringgameJson=JSONObject.toJSONString(game);将List转成JSON字符串:toJSONString也是一样,可以直接将一个List对象丢给toJSONString方法,将List转成JSON字符串。//将List转换为JSON字符串StringgameListJson=JSONObject.toJSONString(gameList);将JSON字符串转换为List:parseArray使用parseArray方法将JSON字符串解析为List。2.0版本需要调用toJavaList方法获取最终的List//将JSON字符串转为List//fastjson1.2.x版本:ListgameListFromJson=JSONObject.parseArray(gameListJson,Game.class);List<游戏>gameListFromJson=JSONArray.parseArray(gameListJson).toJavaList(Game.class);总结使用parseObject方法将JSON转换为JavaBean,使用parseArray方法将其转换为List。要将任何对象转换为JSON,请使用toJSONString方法。对于Gson,我们需要使用Gson对象来完成转换:Gsongson=newGson();将JSON字符串转为Java对象:fromJson使用的是fromJson方法,两个参数的定义和上面两个一样。//将JSON字符串转换为Java对象Gamegame=gson.fromJson(jsonStr,Game.class);将Java对象转换为JSON字符串:toJson使用toJson方法接受一个Java对象并返回对应的JSON字符串。//将Java对象转换为JSON字符串StringgameJson=gson.toJson(game);List转JSON字符串:toJsonList同理,使用toJson方法。//将List转换为JSON字符串StringgameListJson=gson.toJson(gameList);JSON字符串转List:fromJson类似于Jackson,第二个参数使用TypeToken对象指定List转换的目标类型。//将JSON字符串转换为ListListgameListFromJson=gson.fromJson(gameListJson,newTypeToken>(){}.getType());要从JSON汇总到Java对象,请使用fromJson方法。从Java对象到JSON,使用toJson方法。Hutool我们需要使用Hutool提供的JSONUtil对象来完成转换。将JSON字符串转换为Java对象:toBean使用toBean方法,也是一样的,接受两个参数,一个字符串和目标类的类型。//将JSON字符串转换为Java对象Gamegame=JSONUtil.toBean(jsonStr,Game.class);将Java对象转换为JSON字符串:toJsonStr使用toJsonStr方法接受Java对象并返回JSON字符串。//将Java对象转换为JSON字符串StringgameJson=JSONUtil.toJsonStr(game);将List转换为JSON字符串:toJsonStr也是toJsonStr方法。//将List转换为JSON字符串StringgameListJson=JSONUtil.toJsonStr(gameList);将JSON字符串转换为List:toList使用toList方法,它接受与toBean方法相同的参数。//将JSON字符串转换为ListListgameListFromJson=JSONUtil.toList(gameListJson,Game.class);总结一下,JSON转JavaBean使用toBean方法,转List使用toList方法。要将任何对象转换为JSON,请使用toJsonStr方法。最后一篇受限于本人水平,难免有错误和不足之处。如果你发现了什么,请指出!最后,感谢您阅读本文,感谢您认真对待我的努力,希望这篇博客对您有所帮助!你轻轻竖起大拇指,那会为我心中的世界增添一颗璀璨耀眼的星!