2013-08-17 128 views
1

我正面臨着將json對象轉換爲POJO類的問題。在外部類中使用內部類對象java

我有一個名爲Service的公共類,它有一個內部類的用戶。我想使用內部類作爲容器/對象來容納我所有外部類方法的變量。我正在嘗試執行下面的操作,但是我收到了編譯錯誤。請說明我如何做到這一點,並請糾正我在我的代碼中所做的錯誤。

從蝕調試窗口中,我看到在節點變量 節點而獲得的下面的JSON:{ 「名字」: 「ndndbs」, 「姓氏」: 「dnjdnjs」}

試驗1:

public class Service { 
          // Method 
public boolean createUserAccount(JsonNode node) throws Exception { 
     ObjectMapper mapper = new ObjectMapper(); 
     User user=null; 
     try { 
      Service service=new Service(); 
      user = mapper.readValue(node, User.class);  
     } catch (Exception e) {throw new Exception("failed to bind json", e);} 

    System.out.println("Use this anywhere in method"+userNode.firstName); 
    } 

} 
           // Inner class 
public class User { 
     public String firstName; 
     public String lastName; 
    } 
     } 

OUTPUT: 
NULL POINTER EXCEPTION AND user=null even after execution of mapper.readValue() statement 
+0

向我們展示JsonNode的外觀(json以及如何初始化節點)。 –

+0

得到編譯錯誤或空對象異常? –

+0

嗨Sotirios ...我編輯並在我的問題中添加了Json節點 – pret

回答

0

從言

user = mapper.readValue(node, User.class); 

不知道有關原因的NullPointerException(一個完整的堆棧跟蹤可能會幫助)。看來ObjectMapper正試圖通過Reflection創建內部類的實例。但是創建內部和嵌套類的實例並不是直接參見 Is it possible to create an instance of nested class using Java Reflection?

你的情況

Service.User.class.class.getConstructors()[0].newInstance(serviceInstance); 

,而不是

User.class.newInstance() 

這本來是與平時/外班的情況。我不確定ObjectMapper是否配備這種方式實例化類。

我建議將User移動到其自己的源User.java中的頂級公共類,除非您有特定的設計限制,我很想知道。

+1

感謝Prashant爲您的答案... – pret

相關問題