好的,上次我问过这个问题时,在删除它之前,它被3个人投了赞成票。可能它不清楚,对不起我的错。所以我正在使用改造来制作api命中。 api返回一个JSON,其字段数据可以为null。所以JSON可以是这样的。
{
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object"
"data":null
}
当它不为null时,它将类似于
{
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object"
"data":{"b":"xyz","a":123}
}
现在我有了这个对象的模型类
public class A {
@Expose
public String title;
@Expose
public String description;
@Expose
public String type;
@Expose
public Data data =new Data();
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
这是数据模型
public class Data {
public Data(){
this.a=0;
this.b="";
}
@Expose
public double a;
@Expose
public String b="";
public Double getA() {
return a;
}
public void setA(Double a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}
Retrofit会将JSON转换为A类型的Java对象。现在我对这个A类对象做的下一件事是将它转换为另一个B类对象。
为了进行转换,我使用了一个实用程序类。其描述如下
This utility converts one java object to another java object.
* does not support Inheritance
* Mainly useful for when you have two Class one for Restful call and another for ORM suite
* if you get one object from RESTFUL call and another object to be created to save in ORM then generally we
* create another object and manually put the value by setter and getter
* just keep the same field name in both class and use this utility function to assign value from one to another
* and then use another to save in db. So no more stupid getter setter use, it handles nested class and Collection field .
现在我遇到的问题是这个类抛出异常
Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
这是我得到的唯一错误,没有别的。 stacktrace很干净,只是这个错误。基本上对象转换失败了。共振很可能是因为数据字段为空,因为在此之前我没有收到任何此类错误。
这是我的实用工具类(负责对象转换的代码)的一部分代码。我将两个对象类型传递给一个源和另一个目标。在这种情况下,源是A类型的对象。但是第一行引起了我在问题中提到的异常。
// get the class of source object
Class sourceObjectType = sourceObject.getClass();
// get the class of destination object
Class destinationObjectType = destinationObject.getClass();
现在我不知道如何处理这个异常。我尝试创建一个构造函数,以便Data不为null但这不起作用。如果有人能提出建议或帮助我,那就太好了。谢谢!!
答案 0 :(得分:1)
您可以使用简单的if:
首先检查destinationObjectType是否为null if(destinationObjectType){
// handle your condition here
}
或者您可以处理异常:
try{
// get the class of source object
Class sourceObjectType = sourceObject.getClass();
// get the class of destination object
Class destinationObjectType = destinationObject.getClass();
}
catch(NullPointerException e){
// Handle your exception here
}
问候!