Guest User

Untitled

a guest
Apr 19th, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. import groovy.json.JsonSlurper
  2.  
  3. def json = new JsonSlurper().parse(System.in)
  4.  
  5. if (!(json instanceof Map)) {
  6. System.err.println "Input was not json"
  7. System.exit 1
  8. }
  9.  
  10. if (args.length != 1) {
  11. System.err.println "Expected arg: className"
  12. System.exit 2
  13. }
  14.  
  15. String buildClass(String name, Map json) {
  16. def s = new StringWriter()
  17. def additionalClasses = []
  18. s.println "class ${name} {"
  19. json.each {String k, v ->
  20. if (v instanceof String) {
  21. s.println " String $k"
  22. } else if (v instanceof Boolean) {
  23. s.println " Boolean $k"
  24. } else if (v instanceof Number) {
  25. s.println " BigDecimal $k"
  26. } else if (v instanceof Map) {
  27. additionalClasses << buildClass("${k[0].toUpperCase()}${k[1..-1]}Type", v)
  28. s.println " ${k[0].toUpperCase()}${k[1..-1]}Type $k"
  29. } else if (v instanceof List) {
  30. if (v.size()) {
  31. if (v[0] instanceof String) {
  32. s.println " List<String> $k"
  33. } else if (v[0] instanceof Boolean) {
  34. s.println " List<Boolean> $k"
  35. } else if (v[0] instanceof Number) {
  36. s.println " List<BigDecimal> $k"
  37. } else if (v[0] instanceof Map) {
  38. additionalClasses << buildClass("${k[0].toUpperCase()}${k[1..-1]}Type", v[0])
  39. s.println " List<${k[0].toUpperCase()}${k[1..-1]}Type> $k"
  40. } else {
  41. s.println " // List<!!> $k"
  42. }
  43. }
  44. } else {
  45. s.println " //Object $k"
  46. }
  47. }
  48. s.println "}"
  49. s.toString() +'\n'+ additionalClasses.join('\n')
  50. }
  51.  
  52. println buildClass(args[0], json)
Add Comment
Please, Sign In to add comment