如何将 JSONObject 转换为 java 对象

Hen*_*Lee 3 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);
  }
 }
Run Code Online (Sandbox Code Playgroud)

事件处理器类

  public class EventProcessor{

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

  public void addToQueue(Event event){

    eventQueue.add(event);
   }

 }
Run Code Online (Sandbox Code Playgroud)

我曾经传入json方法eventProcessor.addToQueue()并设置eventQueue = new EventQueue<JSONObejct>()public void addToQueue(JSONObject event)。这对我有用。但现在我需要将 POJO 传递给该addToQueue(Event event)方法。如何更改代码并将json结果转换为event对象并将其作为参数传递给addToQueue(Event event)方法?

Gut*_*uts 5

  1. 您可以使用 Gson 将 JSONObject 转换为 java POJO:

    Event event = gson.fromJson(json.toString(), Event.class);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 你可以使用 Jackson 来做同样的事情:

    ObjectMapper objectMapper = new ObjectMapper();
    Event event = objectMapper.readValue(json.toString(), Event.class); 
    
    Run Code Online (Sandbox Code Playgroud)