如何将JSONObject转换为Java对象

时间:2018-10-22 20:33:39

标签: java json object pojo

我有一个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 :(得分:1)

  1. 使用Gson将JSONObject转换为Java POJO:

    Event event = gson.fromJson(json.toString(), Event.class);
    
  2. 使用Jackson进行相同操作:

    ObjectMapper objectMapper = new ObjectMapper();
    Event event = objectMapper.readValue(json.toString(), Event.class); 
    

答案 1 :(得分:0)

我怀疑这是一个Builder Pattern,我的问题是为什么您要将该对象解析为JSON并再次返回该对象? 您不能仅将对象本身传递给方法吗?像addToQueue(this);一样?