Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import groovy.json.JsonSlurper
- def json = new JsonSlurper().parse(System.in)
- if (!(json instanceof Map)) {
- System.err.println "Input was not json"
- System.exit 1
- }
- if (args.length != 1) {
- System.err.println "Expected arg: className"
- System.exit 2
- }
- String buildClass(String name, Map json) {
- def s = new StringWriter()
- def additionalClasses = []
- s.println "class ${name} {"
- json.each {String k, v ->
- if (v instanceof String) {
- s.println " String $k"
- } else if (v instanceof Boolean) {
- s.println " Boolean $k"
- } else if (v instanceof Number) {
- s.println " BigDecimal $k"
- } else if (v instanceof Map) {
- additionalClasses << buildClass("${k[0].toUpperCase()}${k[1..-1]}Type", v)
- s.println " ${k[0].toUpperCase()}${k[1..-1]}Type $k"
- } else if (v instanceof List) {
- if (v.size()) {
- if (v[0] instanceof String) {
- s.println " List<String> $k"
- } else if (v[0] instanceof Boolean) {
- s.println " List<Boolean> $k"
- } else if (v[0] instanceof Number) {
- s.println " List<BigDecimal> $k"
- } else if (v[0] instanceof Map) {
- additionalClasses << buildClass("${k[0].toUpperCase()}${k[1..-1]}Type", v[0])
- s.println " List<${k[0].toUpperCase()}${k[1..-1]}Type> $k"
- } else {
- s.println " // List<!!> $k"
- }
- }
- } else {
- s.println " //Object $k"
- }
- }
- s.println "}"
- s.toString() +'\n'+ additionalClasses.join('\n')
- }
- println buildClass(args[0], json)
Add Comment
Please, Sign In to add comment