在日常工作中,不管是因为接收前端返回约定格式的JSON字符串,还是因为需要约定格式请求第三方服务,或者需要将前端画像xml解析成JSON,再或者需要接入第三方短信,供应商,数据提供商的JSON数据,或是需要提供对外暴露接口的API,可见解析JSON是一个常见操作。
JSON是一个轻量级的数据交换格式。
一:表单数据由数据库实体对象接收
常见的前后端约定字段,指定字段名称后,由数据库实体接收序列化后的表单数据,无序解析。
二:JSONObject解析
前后端约定格式,实体接收String类型,通过JSONObject解析JSON,JSONArray等操作
例如:
1 | [ |
通过JSONObject以及解析JSONArray获取
三:接入第三方API
接入第三方API,或者按约定调用第三方服务时,你会发现约定了又臭有长的JSON格式,包含特定字段,包含token,包含秘钥,一个详细数据解析接口,上百个字段是常见的,而且多种格式嵌套解析,如果单纯将收到的字符串手动转化成JSONObject,还要判空,还要层层遍历,还要验证数据的有效性,这是在是不小的工作量。
改造方法:提取最长,覆盖字段最全的作为实体列接收,含有List数据就由List接收,最外层K值由字段接收,涉及类型判断需按约定传不同数值的,定义为枚举,秘钥等特殊Key值MD5加解密传递。
1 | // 如果url是空,则认为是解析历史数据 不需要拼装请求 |
1 | public enum InterfaceCodeEnum { |
当接收到JSON字符串时
1 | InterfaceCodeResult codeResult=JSONObject.parseObject(InterfaceCodeResult.getRequestInfo(),InterfaceCodeResult.class); |
仅需要判断多个类型即可,对应字段会自动解析,当接收又臭又长的XML解析还需要后端验证时,需要封装Util类进行验证调用
同步更新至微信公众号,请搜索:赵KK日常技术记录,不定时更新文章内容