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

全国招聘网站排名阅文集团旗下哪个网站做的最好

全国招聘网站排名,阅文集团旗下哪个网站做的最好,开发公司补偿物业公司物业费协议,wordpress图片剪切背景 项目重构,对老接口进行技术改造。动代码后,难免会有些bug,我们需要对比改造前后接口的返回,来判断逻辑是否有问题,这就涉及两个json的对比。 常规的diff文本工具是按行对比,无法处理复杂的map。本文通…

背景

        项目重构,对老接口进行技术改造。动代码后,难免会有些bug,我们需要对比改造前后接口的返回,来判断逻辑是否有问题,这就涉及两个json的对比。

        常规的diff文本工具是按行对比,无法处理复杂的map。本文通过gson来解析json, 进而递归寻找diff。

依赖

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version>
</dependency>

代码


import com.google.common.collect.Sets;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.tencent.trpc.core.utils.JsonUtils;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;public class Test {public static Set<String> diffKeySet = new HashSet<>();// 自定义需要忽略的字段public static Set<String> ignores = Sets.newHashSet("code","message");public static void main(String[] args) throws Exception {String formalStr = loadText("../formalStr.txt");String devStr = loadText("../devStr.txt");JsonObject formal = formal(formalStr);JsonObject dev = dev(devStr);findDiff("", formal, dev);filter();System.out.println(JsonUtils.toJson(diffKeySet));System.out.println(JsonUtils.toJson(diffKeySet.stream().map(s -> s.replaceAll("[\\d]", "")).collect(Collectors.toSet())));}private static void filter() {diffKeySet.removeIf(key -> ignores.stream().anyMatch(key::contains));}private static String loadText(String filePath) throws Exception {FileInputStream inputStream = null;BufferedReader bufferedReader = null;StringBuilder builder = new StringBuilder();try {String line;inputStream = new FileInputStream(filePath);bufferedReader = new BufferedReader(new InputStreamReader(inputStream));while ((line = bufferedReader.readLine()) != null) {builder.append(line.trim());}return builder.toString();} finally {close(inputStream, bufferedReader);}}public static void close(FileInputStream inputStream, BufferedReader bufferedReader) {try {if (inputStream != null) {inputStream.close();}if (bufferedReader != null) {bufferedReader.close();}} catch (IOException e) {e.printStackTrace();}}private static void findDiff(String prefix, JsonObject formal, JsonObject dev) {Set<String> formalKeySet = formal.keySet();formalKeySet.forEach(key -> {JsonElement formalElement = formal.get(key);JsonElement devElement = dev.get(key);findElementDiff(prefix, key, formalElement, devElement);});}public static void findElementDiff(String prefix, String key, JsonElement formalElement, JsonElement devElement) {String diffKeyPath = prefix + ":" + key;if (isNull(formalElement, devElement, diffKeyPath)) {return;}if (formalElement.isJsonObject()) {// 处理mapcheckObject(formalElement, devElement, diffKeyPath);return;}if (formalElement.isJsonArray()) {// 处理集合checkCollection(prefix, key, formalElement, devElement, diffKeyPath);return;}//if (formalElement.isJsonPrimitive()) {// 基本类型if (!formalElement.getAsString().equals(devElement.getAsString())) {addDiff(diffKeyPath);}//}}private static boolean isNull(JsonElement formalElement, JsonElement devElement, String diffKeyPath) {if (Objects.isNull(formalElement) || formalElement.isJsonNull()) {if (Objects.isNull(devElement) || devElement.isJsonNull()) {return true;}addDiff(diffKeyPath);return true;}if (Objects.isNull(devElement) || devElement.isJsonNull()) {addDiff(diffKeyPath);return true;}return false;}private static void checkObject(JsonElement formalElement, JsonElement devElement, String diffKeyPath) {if (!devElement.isJsonObject()) {addDiff(diffKeyPath);return;}JsonObject formalObject = formalElement.getAsJsonObject();JsonObject devObject = devElement.getAsJsonObject();findDiff(diffKeyPath, formalObject, devObject);}private static void checkCollection(String prefix, String key, JsonElement formalElement, JsonElement devElement,String diffKeyPath) {if (!devElement.isJsonArray()) {addDiff(diffKeyPath);return;}JsonArray formalArr = formalElement.getAsJsonArray();JsonArray devArr = devElement.getAsJsonArray();int size = formalArr.size();if (size != devArr.size()) {addDiff(diffKeyPath);return;}for (int i = 0; i < size; i++) {JsonElement formalArrElement = formalArr.get(i);JsonElement devArrElement = devArr.get(i);findElementDiff(prefix, String.format("%s[%d]", key, i), formalArrElement, devArrElement);}}public static void addDiff(String path) {diffKeySet.add(path);}public static JsonObject dev(String devJson) {return new Gson().fromJson(devJson, JsonObject.class);}public static JsonObject formal(String formalJson) {return new Gson().fromJson(formalJson, JsonObject.class);}

使用方式

        将不同环境的json串分别放到txt中,调整java脚本中的文件地址,运行即可。大家结合自身诉求,按需调整脚本。

        以文本1作为标准,脚本返回两行数据:

        文本1中与文本2不同的所有diff,list对象不计入下标;

        文本1中与文本2不同的去重后的diff,list对象不计入下标;

http://www.yayakq.cn/news/973530/

相关文章:

  • 以前做视频的网站iis网站压缩
  • 佛山优化网站公司ios软件开发前景
  • 微信网站如何开发深圳哪个网站好推广一点
  • 网站模板插件定西市建设局网站
  • 男子做网站临邑县住房和城乡建设局网站
  • 站长工具seo综合查询外部链接数量手机网站建设规划图
  • 网站建设企业网站建设网站排版布局比例
  • 外贸网站开发开发漳州网
  • 高校网站建设需求分析报告湖南网站建设磐石网络答疑
  • 个人如何做商城网站南京网页设计招聘
  • 西部数码如何建设自己的网站福州专业的seo软件
  • 公司搭建网站步骤网站建设价格与方案
  • 团购网站建设流程如何管理wordpress
  • 做网站程序的都不关注seossl aws wordpress
  • 网站怎么解析做美食直播哪个网站好
  • 介绍做茶工艺的网站开工作室做网站怎样找资源
  • 易销云建站公司类似非小号的网站怎么做
  • 贵阳搜索玩的网站wordpress移动导航菜单
  • 怎么做模板网站的报价表长沙房地产公司排名
  • 网站设计 seo做电子政务网站
  • vc域名建站的网站企业做网站 里面都写什么
  • 海口兼职网站网上怎么推广公司产品
  • 什么样的网站利于优化如何做收费会员定制网站
  • 企业每年向工商网站做申报河北建设网站怎么下载企业锁
  • php开源企业网站隐私空间
  • 高端网站开发费用python基础教程百度网盘
  • 湘潭企业网站建设 磐石网络wordpress wp_list_pages
  • asp网站系统wordpress 知更鸟 公告
  • 南通做公司网站影响网站速度的代码
  • 保定建站软件网站如何做tag