【问题标题】:How to convert JSONObject to java object如何将 JSONObject 转换为 java 对象
【发布时间】:2018-10-22 20:33:39
【问题描述】:

我有一个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&lt;JSONObejct&gt;()public void addToQueue(JSONObject event)。这对我有用。但现在我只需将 POJO 传递给 addToQueue(Event event) 方法。如何更改代码并将json 结果转换为event 对象并将其作为参数传递给addToQueue(Event event) 方法?

【问题讨论】:

标签: java json object pojo


【解决方案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); 
    

【讨论】:

    【解决方案2】:

    我怀疑这是Builder Pattern,但我的问题是你为什么将对象解析为 JSON 并再次返回对象? 您不能只是将对象本身传递给方法吗?喜欢addToQueue(this);

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 2016-05-14
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多