diff --git a/pom.xml b/pom.xml
index c1b7e26b5cc16a5db0060b9d2f5906411bf4c090..6b114e35cf606ec8792e25266ccdf57cf6d376cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,6 +19,13 @@
jackson-databind
2.9.7
+
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.25
+
diff --git a/src/main/java/JsonFileCompare.java b/src/main/java/JsonFileCompare.java
index 9cd4440826ab5d03c90c95b21acf431e7f5b0598..fd85c1fa1e7b489b775d52a77cc63770e27676f3 100644
--- a/src/main/java/JsonFileCompare.java
+++ b/src/main/java/JsonFileCompare.java
@@ -1,7 +1,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -11,10 +12,9 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class JsonFileCompare {
+ private static Logger log = LoggerFactory.getLogger(JsonFileCompare.class);
public static void main(String[] args) {
-
-
try {
ObjectMapper objectMapper = new ObjectMapper();
Path originPath = Paths.get(args[0]);
@@ -25,12 +25,12 @@ public class JsonFileCompare {
IntStream.range(1, args.length).forEach(i -> findMissingKeys(Paths.get(args[i]), originSet));
} catch (Exception e) {
- System.err.println(args[0] + " is not exists or not json files.");
+ log.error("{} is not exists or not json files.", args[0], e);
System.exit(1);
}
}
- public static void addKeys(String currentPath, JsonNode jsonNode, Set set, List suffix) {
+ private static void addKeys(String currentPath, JsonNode jsonNode, Set set, List suffix) {
if (jsonNode.isObject()) {
ObjectNode objectNode = (ObjectNode) jsonNode;
Iterator> iter = objectNode.fields();
@@ -40,29 +40,19 @@ public class JsonFileCompare {
Map.Entry entry = iter.next();
addKeys(pathPrefix + entry.getKey(), entry.getValue(), set, suffix);
}
- } else if (jsonNode.isArray()) {
- ArrayNode arrayNode = (ArrayNode) jsonNode;
-
- for (int i = 0; i < arrayNode.size(); i++) {
- suffix.add(i + 1);
- addKeys(currentPath, arrayNode.get(i), set, suffix);
-
- if (i + 1 < arrayNode.size()) {
- suffix.remove(arrayNode.size() - 1);
- }
- }
} else if (jsonNode.isValueNode()) {
+ StringBuilder sb = new StringBuilder(currentPath);
if (currentPath.contains("-")) {
- for (int i = 0; i < suffix.size(); i++) {
- currentPath += "-" + suffix.get(i);
+ for (Integer suffix1 : suffix) {
+ sb.append("-").append(suffix1);
}
}
- set.add(currentPath);
+ set.add(sb.toString());
}
}
- public static void findMissingKeys(Path targetPath, Set originSet) {
+ private static void findMissingKeys(Path targetPath, Set originSet) {
if (!targetPath.toFile().exists()) return;
try {
Set targetSet = new HashSet<>();
@@ -76,13 +66,11 @@ public class JsonFileCompare {
.filter(key -> !targetSet.contains(key))
.collect(Collectors.toSet());
if (!missingKey.isEmpty()) {
- System.err.println("Missing Key on " + targetPath.toString());
- System.err.println("Missing Keys: ");
- missingKey.stream().sorted().forEach(System.err::println);
+ log.error("Missing Key on {} \n Missing Keys: {}", targetPath, missingKey.stream().sorted().collect(Collectors.toList()));
System.exit(1);
}
} catch (Exception e) {
- System.err.println(targetPath.toString() + " is not json files.");
+ log.error("{} is not json files.", targetPath, e);
System.exit(1);
}
}