![](/img/trans.png)
[英]Null pointer exception from api response using retrofit in android studio
[英]Parse two different API response using Retrofit 2 in Android
我在使用 Retrofit 2 解析 API 響應時遇到問題。
API 已經投入生產,我無法請求更改 API。
以下是我從服務器得到的兩種不同的響應
成功響應:
{
"status":0,
"empId":121,
"message":"Data available",
"data":{
"name":"Sam",
"designation": "Software Engineer",
"mob": "1255565456"
}
}
失敗響應
{
"status":10,
"empId":121,
"message":"No data available",
"data":""
}
解析類
class Response{
public int status;
public String message;
public int empId;
public Student data;
}
class Student{
public String name;
public String designation;
public String mob;
}
我能夠解析成功響應。 但是對於失敗案例會出現以下異常。
java.lang.IllegalStateException:應為 BEGIN_OBJECT 但為 STRING
處理這種情況的方法是將“數據”視為通用 object 而不是字符串或“學生”。
p̶u̶b̶l̶i̶c̶ ̶S̶t̶u̶d̶e̶n̶t̶ ̶d̶a̶t̶a̶;̶
public Object data;
在使用數據時添加這樣的檢查
if(data instanceof String){
String parsedData=data.toString();
}else{
Student parsedData= (Student) data;
}
嘗試這個,
Object getrow = null;
try {
getrow = this.// your object
LinkedTreeMap<Object, Object> tree = (LinkedTreeMap) getrow;
String name = tree.get(<your body>).toString()
} catch (Exception e) {
e.printStackTrace();
}
使學生成為內部 class 或響應 class。 Retrofit 將解析響應並為您提供 object。
class Response
{
public int status;
public String message;
public int empId;
public Student data;
Class Data
{
public String name;
public String designation;
public String mob;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.