1

我在将 json 对象转换为 POJO 类时遇到问题。

我有一个名为 Service 的公共类,它有一个内部类 User。我想使用内部类作为容器/对象来保存我所有外部类方法的变量。我正在尝试执行以下操作,但出现编译错误。请展示我如何做到这一点,并请纠正我在下面的代码中所做的错误。

从 Eclipse 调试窗口,我看到在节点变量 node 中获得了以下 json : {"firstName":"ndndbs","lastName":"dnjdnjs"}

试验一:

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
4

1 回答 1

0

从声明

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

不确定 NullPointerException 的原因(完整的堆栈跟踪可能会有所帮助)。看来 ObjectMapper 正在尝试通过反射创建内部类的实例。但是创建内部类和嵌套类的实例并不简单,请参阅 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 中的顶级公共类,除非您有我很想知道的特定设计限制。

于 2013-08-17T23:17:31.400 回答