使用fastJson中的JSONObject对象简化POST请求传参-2022新项目
一、业务场景
Java项目开发中,经常会用到远程调用,不管是POST请求,Feign远程调用,还是使用Resttemplate中的POST方法等等都需要传递参数。
可是如何更好的传递参数呢?之前自己开发的项目中有各种各样的处理方式,如下面的使用Map传参,有的开发同学是自定义一个参数对象,
然后往里面一个一个的设置值。这些方式都没什么问题,完全能够实现想要的效果。自己之前也使用过这些方式,只是自己在想有没有
更好的方式来优化一下这些代码呢?直到有一天自己在解析JSON数据的时候,使用fastJson中的 JSONObject 对象时,找到优化方法。
二、需求分析
先看一段简单的代码:
JSONObject jsonObject = JSONObject.parseObject(content);
String f = jsonObject.getString("file");
这段代码意思很清楚,想将一个字符串转换为 JSONObject 对象,然后直接从这个对象中获取自己需要的值即可。打断点调试的
时候发现 JSONObject 里面的数据都是key-value类型的,并且里面可以包含多层嵌套,可以使用Map集合的方式取值。简单的去
看了一下源码,底层也是使用Map集合实现的,如下图所示:
自己就想到既然解析数据的使用可以使用 JSONObject 对象来获取自己想要的数据,那传递参数时能否也使用这个对象来进行传参呢?
三、解决方案
经过不断地尝试,发现这种方式完全可行。使用 JSONObject 对象和 JSONArray 对象来进行传参可以进行任意复杂的嵌套组合。可以
构造任意的复杂的POST请求参数信息,这样可以很大地简化参数的封装,不用再去创建各种请求的对象,也不用在去创建map集合,不管是
像下面这种有嵌套的参数封装信息,
还是这种没有嵌套的,
或者是这种带数组的方式都能够很好的适用
总结:使用 FastJson框架中的JSONObject对象,能够很好的解决在使用POST请求进行远程调用时,参数的封装问题。
不在需要去创建新的请求参数对象,直接使用JSONObject 进行封装即可,简单、方便、快捷。