Skip to content

Commit

Permalink
json2POJO uses Gson to parse json
Browse files Browse the repository at this point in the history
  • Loading branch information
cofcool committed Jan 30, 2023
1 parent 4495c89 commit 81bc901
Showing 1 changed file with 10 additions and 17 deletions.
27 changes: 10 additions & 17 deletions src/main/java/net/cofcool/toolbox/internal/JsonToPojo.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.cofcool.toolbox.internal;

import com.google.gson.Gson;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
Expand All @@ -23,6 +24,7 @@ public ToolName name() {
return ToolName.json2POJO;
}

@SuppressWarnings("unchecked")
@Override
public void run(Args args) throws Exception {
String json;
Expand All @@ -33,21 +35,16 @@ public void run(Args args) throws Exception {
json = args.readArg("json").get().val();
}

var result = new LinkedHashMap<>();
Node tokens = parse(json);
parse(tokens, result);
getLogger().debug(result);

var pkg = args.readArg("pkg").orElse(new Arg("", "demo")).val();
var clean = args.readArg("clean").orElse(new Arg("", "true")).val();
var root = args.readArg("root").orElse(new Arg("", "Root")).val();
var out = args.readArg("out").orElse(new Arg("", "./pojo")).val();
var langStr = args.readArg("lang").orElse(new Arg("", Lang.JAVA_RECORD.lang)).val();
var verStr = args.readArg("ver").orElse(new Arg("", Lang.JAVA_RECORD.ver)).val();
var lang = Lang.parse(langStr, verStr);
getLogger().info("Write file to " + out);
getLogger().info("Write files to " + out);

writeClass(root, result, pkg, out, lang, Boolean.parseBoolean(clean));
writeClass(root, new Gson().fromJson(json, LinkedHashMap.class), pkg, out, lang, Boolean.parseBoolean(clean));
}

@SuppressWarnings("unchecked")
Expand All @@ -62,7 +59,7 @@ private void writeClass(String root, Map<Object, Object> result, String pkg, Str
}
var contents = new LinkedHashSet<String>();
result.forEach((k1, v1) -> {
Object v = v1;
var v = v1;
String k;
if (v1 instanceof ListMap listMap) {
v = listMap.getData();
Expand All @@ -72,7 +69,9 @@ private void writeClass(String root, Map<Object, Object> result, String pkg, Str
}
var className = String.valueOf(k.charAt(0)).toUpperCase() + k.substring(1);
var type = className;
if (Map.class.isAssignableFrom(v.getClass())) {
if (v == null) {
type = "Object";
} else if (Map.class.isAssignableFrom(v.getClass()) && !((Map<?, ?>) v).isEmpty()) {
writeClass(className, (Map<Object, Object>) v, pkg, out, lang, false);
} else if (List.class.isAssignableFrom(v.getClass())) {
type = "List<Object>";
Expand All @@ -90,14 +89,8 @@ private void writeClass(String root, Map<Object, Object> result, String pkg, Str
type = "List<Integer>";
}
}
} else if (String.class.isAssignableFrom(v.getClass())) {
type = "String";
} else if (Long.class.isAssignableFrom(v.getClass())) {
type = "Long";
} else if (Integer.class.isAssignableFrom(v.getClass())) {
type = "Integer";
} else if (Boolean.class.isAssignableFrom(v.getClass())) {
type = "Boolean";
} else {
type = v.getClass().getSimpleName();
}
contents.add(type + " " + k);
});
Expand Down

0 comments on commit 81bc901

Please sign in to comment.