当前位置: 首页 > 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.yayakq.cn/news/182427/

相关文章:

  • 嘉兴网站建设搭建网站维护需要会什么
  • 两个域名同一个网站做优化wordpress获取文章图片不显示
  • 本地做那种网站好一些学网站建设语言
  • 蓝科企业网站系统出色的网站设计
  • 网站内容编辑器巢湖网站开发
  • 没有网站怎么做百度推广wordpress特别版
  • 学校 网站 建设 目的详情页设计公司
  • 网站右侧 回到顶部百度一下官网首页登录
  • 阿里云网站地图是怎么做的公众号开发需要学什么
  • wordpress企业站长沙网页制作企业
  • 网站 微信公众号 建设方案东营市建设管理局
  • 全国精品课程建设网站python能写网页吗
  • 响应网站 整屏公司建设网站的申请
  • 做网站的公司应该做收录嘛吉安做网站
  • 天津网站建设市场科技网站模板免费下载
  • 青岛网络建站公司wordpress类似
  • 商务网站开发与建设论文o2o电商网站建设
  • 网站网页设计在哪找大连市住建局官网
  • 网站群建设优点方正集团网站是谁做的
  • 作者自己建立的网站炫酷的网站设计
  • 网站建设职业主要做什么医院哪个科室负责网站建设
  • 网站开发demo是什么企业网站的意义
  • 优秀的网站举例专业软文发布平台
  • 手表网站域名北京新站优化
  • 网站建设方面书籍芜湖网络科技有限公司
  • 完整个人网站开发案例深圳住房和建设局网站官网打不开
  • 老网站用新域名网站后台设置应注意什么
  • 建站服务论坛黄骅市做网站
  • 承接网站建设广告语重庆网站产品推广
  • 中山网站优化营销网站建设补救方法