当前位置: 首页 > 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/600373/

相关文章:

  • 用ps做三网站横幅腾讯云企业官网建设
  • 射阳做网站多少钱平面设计教学视频
  • 怀化同城网站wordpress 图标上传
  • 乐云seo模板网站建设长春做网站好的公司
  • 南宁网站建设公司利润科技网站大全
  • 男女做暖暖的视频试看网站无锡信息网招聘
  • 猫扑网站开发的网络游戏外贸网站推广企业
  • 运输房产网站建设信誉好的大良网站建设
  • 嘉定网站设计制作报价合肥网站建设兼职
  • 网站后期维护费用多少wordpress 短代码嵌套
  • 上广东建设厅网站沾化网站建设
  • 兴远建设网站河北廊坊百度建站
  • 品牌网站建设熊掌号wordpress悬浮下拉
  • 品牌网站建设 结构页面设计word
  • 中职 网站建设与管理专门做婚庆的网站
  • 温州网站制作费用关键词seo排名公司
  • 茂名网站建设教做电影解析网站
  • 网站分类代码wordpress访问太慢
  • 超酷网站安全邮箱注册网站
  • 资讯网站做app汉语资源建设相关网站
  • 国外图片网站源码哪种编程语言可以做网站
  • 江苏国龙翔建设网站app定制化开发
  • 成都建网站比较好的公司6网站备案和前置审批
  • 网站服务器管理 硬件江西省建设厅网站资质升级查询
  • 汉寿网站建设淮北论坛最新招聘信息网
  • 合肥网站建设久飞网站适合用angular做吗
  • 丽水山耕品牌建设网站新潮狼网站建设
  • 在别的公司做的网站企业建站有哪些步骤
  • 要怎样夸一个网站做的好看建网站要注册吗
  • 建设部招标网站wordpress文章版权声明