当前位置: 首页 > news >正文

宁波建设行业招聘信息网站靠谱的拉新平台

宁波建设行业招聘信息网站,靠谱的拉新平台,网站建设怎么开票,品牌推广工作职责Java String转JSONObject时保持字段顺序不变 问题背景解决方案 问题背景 在业务接口开发过程中,有一个新增接口,需要支持批量新增数据,这时入参就需要用到 json 格式数据,且包含 list 集合,比如这样的数据格式&#x…

Java String转JSONObject时保持字段顺序不变

  • 问题背景
  • 解决方案

问题背景

在业务接口开发过程中,有一个新增接口,需要支持批量新增数据,这时入参就需要用到 json 格式数据,且包含 list 集合,比如这样的数据格式(整个数据是 String ),接口连接类似:http://www.test.com/url?data=urlEncode(String)

{"sign":"11111111111111","courseList":[{"courseCategory":"1021","courseSort":21,"courseTypeTwo":22,"courseLevel":"1","courseYear":"2023","isFreeCourse":0,"courseDuration":"142","courseId":"2023306111","courseTeacher":"张克1","courseCredit":"10.00","courseName":"中国特色社会主义思想"}],"schoolCode":"wx0001"}

通过调用接口传参之后需要将接收到的参数进行转换并用于后续业务逻辑处理,简单的说也就是将接收到的 String 转换成 JSONObject ,代码示例如下

 public static void main(String[] args) {String jsonString = "{\"sign\":\"11111111111111\",\"courseList\":[{\"courseCategory\":\"1021\",\"courseSort\":21,\"courseTypeTwo\":22,\"courseLevel\":\"1\",\"courseYear\":\"2023\",\"isFreeCourse\":0,\"courseDuration\":\"142\",\"courseId\":\"2023306111\",\"courseTeacher\":\"张克1\",\"courseCredit\":\"10.00\",\"courseName\":\"中国特色社会主义思想\"}],\"schoolCode\":\"wx0001\"}";System.out.println(jsonString);JSONObject jsonObject = JSON.parseObject(jsonString);System.out.println(JSON.toJSONString(jsonObject));}

执行main函数后的打印结果如下

{"sign":"11111111111111","courseList":[{"courseCategory":"1021","courseSort":21,"courseTypeTwo":22,"courseLevel":"1","courseYear":"2023","isFreeCourse":0,"courseDuration":"142","courseId":"2023306111","courseTeacher":"张克1","courseCredit":"10.00","courseName":"中国特色社会主义思想"}],"schoolCode":"wx0001"}{"sign":"11111111111111","courseList":[{"courseYear":"2023","courseName":"中国特色社会主义思想","courseLevel":"1","courseDuration":"142","courseTypeTwo":22,"courseCredit":"10.00","isFreeCourse":0,"courseTeacher":"张克1","courseId":"2023306111","courseCategory":"1021","courseSort":21}],"schoolCode":"wx0001"}

在这里插入图片描述
这里可以很明显的看到经过 JSON.parseObject(jsonString) 后的 JSONObject 再转换成 String 打印之后和之前的字符串参数顺序不一样了,那么通常情况下如果业务本身不关注参数顺序的话是没有影响的,但是接口调用时需要调用双方两边保持同样的入参顺序进行(入参+密钥+时间戳)的 MD5 加密,这样就会导致两边 MD5 后的字符串不一致,那么如何处理呢?

解决方案

这种情况下,想要保证同样的入参同样的加密方式同样的加密密钥加密出来的字符串一致的话,那就需要保证在接收到的入参字符串与传过来的入参一致, fastjson 支持这样的属性 Feature.OrderedField ,调整代码

public static void main(String[] args) {String jsonString = "{\"sign\":\"11111111111111\",\"courseList\":[{\"courseCategory\":\"1021\",\"courseSort\":21,\"courseTypeTwo\":22,\"courseLevel\":\"1\",\"courseYear\":\"2023\",\"isFreeCourse\":0,\"courseDuration\":\"142\",\"courseId\":\"2023306111\",\"courseTeacher\":\"张克1\",\"courseCredit\":\"10.00\",\"courseName\":\"中国特色社会主义思想\"}],\"schoolCode\":\"wx0001\"}";System.out.println(jsonString);JSONObject jsonObject = JSON.parseObject(jsonString, Feature.OrderedField);System.out.println(JSON.toJSONString(jsonObject));}

执行结果

{"sign":"11111111111111","courseList":[{"courseCategory":"1021","courseSort":21,"courseTypeTwo":22,"courseLevel":"1","courseYear":"2023","isFreeCourse":0,"courseDuration":"142","courseId":"2023306111","courseTeacher":"张克1","courseCredit":"10.00","courseName":"中国特色社会主义思想"}],"schoolCode":"wx0001"}{"sign":"11111111111111","courseList":[{"courseCategory":"1021","courseSort":21,"courseTypeTwo":22,"courseLevel":"1","courseYear":"2023","isFreeCourse":0,"courseDuration":"142","courseId":"2023306111","courseTeacher":"张克1","courseCredit":"10.00","courseName":"中国特色社会主义思想"}],"schoolCode":"wx0001"}

如图所示
在这里插入图片描述
这里可以看到的入参和接收后数据字符串顺序完全一样了,那么在进行后续的 JSONObject 再转换成 String 参与 MD5 加密也就能保证接口调用方和接口业务处理方两边的加密 sign 一致了。

http://www.hkea.cn/news/140736/

相关文章:

  • 换物网站为什么做不起来中国免费广告网
  • 可以显示一张图片的网站怎么搭建搜索引擎优化策略
  • 精品课程网站建设论文今天的新闻最新消息
  • 检查网站收录问题蚌埠seo外包
  • 建站展示网站优化网
  • 秦皇岛网站建设价格深圳seo公司
  • 广告型网站建设广州营销网站建设靠谱
  • 包头学做网站平台开发
  • 个人如何做微商城网站指数分布的分布函数
  • 北京网站设计哪家公司好建站工具
  • 深圳外贸网络推广seo诊断书案例
  • Java做网站的基本框架优化关键词规则
  • 网上手机商城网站建设直通车推广计划方案
  • 网站框架是谁做做个电商平台要多少钱
  • 网站开发建设书籍推荐b2b外贸平台
  • 网站首页的布局设计进行优化
  • 无锡做家纺公司网站如何建网站不花钱
  • bootstrap制作的网站页面优化网站seo
  • 海口网站建设优化班级优化大师官网登录
  • 连接品硕网线做怎么弹网站百度地图推广电话
  • 网站做cdn怎么弄百度推广怎么推广
  • 光谷做网站推广竞价服务托管公司
  • 网上商城网站建设方案书公众号seo排名
  • wordpress内网访问泰州百度关键词优化
  • 做淘客网站用备案网络营销计划书怎么写
  • 网站 公安 备案深圳百度推广客服电话多少
  • 北京米兰广告设计有限公司广州优化疫情防控举措
  • 汕头个人建站模板网站推广计划方法
  • php企业网站无限制源码网络营销方案设计
  • 动漫网站开发与建设百度网盘网页版入口官网