Guest User

Untitled

a guest
Nov 24th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. package com.javarush.task.task33.task3304;
  2.  
  3. import com.fasterxml.jackson.annotation.JsonSubTypes;
  4. import com.fasterxml.jackson.annotation.JsonTypeInfo;
  5. import com.fasterxml.jackson.core.type.TypeReference;
  6. import com.fasterxml.jackson.databind.JavaType;
  7. import com.fasterxml.jackson.databind.ObjectMapper;
  8.  
  9. import java.io.IOException;
  10. import java.io.StringReader;
  11. import java.io.StringWriter;
  12.  
  13. /*
  14. Конвертация из одного класса в другой используя JSON
  15. */
  16. public class Solution {
  17. public static void main(String[] args) throws IOException {
  18. Second s = (Second) convertOneToAnother(new First(), Second.class);
  19. First f = (First) convertOneToAnother(new Second(), First.class);
  20. }
  21.  
  22. public static Object convertOneToAnother(Object one, Class resultClassObject) throws IOException {
  23. // Конвертируем объект в Json
  24. ObjectMapper mapper = new ObjectMapper();
  25. StringWriter writer = new StringWriter();
  26. mapper.writeValue(writer, one); // Записываем поля класса/объекта one в writer
  27. String resultString = writer.toString().replaceFirst(one.getClass().getSimpleName().toLowerCase(), resultClassObject.getSimpleName().toLowerCase());
  28. StringReader reader = new StringReader(resultString); // передаем в reader информацию из объекта one
  29.  
  30. Object result = mapper.readValue(resultString, resultClassObject);
  31.  
  32. return result;
  33. }
  34.  
  35. @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property="className")
  36. @JsonSubTypes(@JsonSubTypes.Type(value=First.class, name="first"))
  37. public static class First {
  38. public int i;
  39. public String name;
  40. }
  41.  
  42. @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property="className")
  43. @JsonSubTypes(@JsonSubTypes.Type(value=Second.class, name="second"))
  44. public static class Second {
  45. public int i;
  46. public String name;
  47. }
  48. }
Add Comment
Please, Sign In to add comment