Как преобразовать JSONObject в объект Java - PullRequest
0 голосов
/ 22 октября 2018

У меня есть класс Event, который использует шаблон компоновщика для установки полей и, наконец, добавляет поля к JSON объекту.

public class Event{

  private EventProcessor eventProcessor = new EventProcessor();
  private String userName;
  private String userID;

  public Event setUserName(String userName){
     this.userName = userName;
     return this;
  }
  public Event setUserID(String userID){
     this.userID = userID;
     return this;
}

  public void toJson(){
   JSONObject json = new JSONObject();

   if(null != userName)
   json.put("userName", userName);
   if(null != userID)
   json.put("userID", userID);

  // need help to convert json to "event"
   eventProcessor.addToQueue(event);
  }
 }

Класс EventProcessor

  public class EventProcessor{

   static{
  EventQueue eventQueue = new EventQueue<Event>();
 }

  public void addToQueue(Event event){

    eventQueue.add(event);
   }

 }

Раньше я передавал json в eventProcessor.addToQueue() метод и устанавливал eventQueue = new EventQueue<JSONObejct>() и public void addToQueue(JSONObject event).Это работает для меня.Но теперь мне нужно просто передать POJO методу addToQueue(Event event).Как изменить код и преобразовать результат json в объект event и передать его в качестве параметра методу addToQueue(Event event)?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018
  1. Используйте Gson для преобразования JSONObject в java POJO:

    Event event = gson.fromJson(json.toString(), Event.class);
    
  2. Используйте Джексона для того же:

    ObjectMapper objectMapper = new ObjectMapper();
    Event event = objectMapper.readValue(json.toString(), Event.class); 
    
0 голосов
/ 23 октября 2018

Я сомневаюсь, что это Builder Pattern, но мой вопрос: почему вы анализируете объект в JSON и снова возвращаетесь к объекту?Разве вы не можете просто вставить сам объект в метод?Как addToQueue(this);?

...