Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.05 KB | None | 0 0
  1. import json
  2.  
  3.  
  4. class JavaClass:
  5. def __init__(self, name):
  6. self.name = name
  7. self.fields = dict()
  8.  
  9. def add_field(self, java_type, name):
  10. self.fields[name] = java_type
  11.  
  12. def __str__(self):
  13. output = 'public class ' + self.name + ' {\n'
  14. for idx, field_name in enumerate(self.fields):
  15. java_type = self.fields[field_name]
  16. output += ' @SerializedName("' + field_name + '")\n'
  17. output += ' ' + java_type + ' ' + to_camel(field_name) + ';\n'
  18. if idx != len(self.fields) - 1:
  19. output += '\n'
  20. output += '}'
  21. return output
  22.  
  23.  
  24. def to_camel(snake_str):
  25. words = snake_str.split('_')
  26. return words[0] + ''.join(word.title() for word in words[1:])
  27.  
  28.  
  29. def gen_java_classes(class_name, classes, source):
  30. java_class = JavaClass(class_name)
  31. for idx, field_name in enumerate(source):
  32. field_value = source.get(field_name)
  33. python_type = type(field_value)
  34. if python_type == str:
  35. java_type = 'String'
  36. elif python_type == int:
  37. java_type = 'int'
  38. elif python_type == bool:
  39. java_type = 'boolean'
  40. elif python_type == dict:
  41. java_type = field_name.title()
  42. gen_java_classes(field_name.title(), classes, field_value)
  43. elif python_type == list:
  44. java_type = 'List<' + field_name.title() + '>'
  45. field_value = field_value[0]
  46. gen_java_classes(field_name.title(), classes, field_value)
  47. else:
  48. java_type = 'Object'
  49. java_class.add_field(java_type, field_name)
  50. classes.append(java_class)
  51. return classes
  52.  
  53. print('Enter outer class name')
  54. outer_class_name = input()
  55.  
  56. print('Enter Json')
  57. input_lines = list()
  58. while True:
  59. input_line = input()
  60. if input_line:
  61. input_lines.append(input_line)
  62. else:
  63. json_str = '\n'.join(input_lines)
  64. break
  65. json_dict = json.loads(json_str)
  66.  
  67. java_classes = gen_java_classes(outer_class_name, [], json_dict)
  68. for item in java_classes:
  69. print(str(item) + '\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement