首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在retrofit 2响应体中处理空或空json键值响应?

如何在retrofit 2响应体中处理空或空json键值响应?
EN

Stack Overflow用户
提问于 2020-02-10 03:27:43
回答 4查看 1K关注 0票数 0

我正在使用改良2在android。当其中一个值返回空键(如"TOTAL_EXPENSE_AMOUNT":null )时,我的应用程序就会崩溃。我的儿子如下:

代码语言:javascript
运行
复制
[{
    "YEAR": "2019",
    "TOTAL_AMOUNT": "1580292",
    "TOTAL_EXPENSE_AMOUNT": "1740857",
    "TOTAL_BALANCE": "-160565"
},
 {
    "YEAR": "2018",
    "TOTAL_AMOUNT": "144000",
    "TOTAL_EXPENSE_AMOUNT": null,
    "TOTAL_BALANCE": null
 } ]

1..My改装接口如下:

代码语言:javascript
运行
复制
public interface Api {

@POST("User/yearly_balance_expense_list.php")
Call<List<Balance_Data_Model>> getBalanceList();

}

2.我的api服务如下所示:

代码语言:javascript
运行
复制
public class ApiService {

public static final String BASE_URL = IPConfigure.getIP();
Api api = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build().create(Api.class);


  public Call<List<Balance_Data_Model>> getBalanceList(){
    return api.getBalanceList();
    }

 }

**3.**我的projo档案如下:

代码语言:javascript
运行
复制
public class Balance_Data_Model {

@SerializedName("YEAR")
@Expose
public String year = "";

@SerializedName("TOTAL_AMOUNT")
@Expose
public String total_amount = "";


@SerializedName("TOTAL_EXPENSE_AMOUNT")
@Expose
public String total_expense = "";

@SerializedName("TOTAL_BALANCE")
@Expose
public String total_balance = "";

//getter/setter here

}

**4.**我使用了下面的活动代码

代码语言:javascript
运行
复制
ApiService apiService = new ApiService();
    Call<List<Balance_Data_Model>> call = apiService.getBalanceList();
    call.enqueue(new Callback<List<Balance_Data_Model>>() {
        @Override
        public void onResponse(Call<List<Balance_Data_Model>> list, Response<List<Balance_Data_Model>> response) {
            Log.e("success--->","success");
            for(Balance_Data_Model m : response.body()){                   
                Log.e("total_expense--->",m.total_expense);
                Log.e("total_balance--->",m.total_balance);
                
            }
        }

        @Override
        public void onFailure(Call<List<Balance_Data_Model>> call, Throwable t) {
            Log.e("failure--->",t.toString());
        }
    });

第一圈没问题。当total_balance为空时,应用程序就会崩溃。怎么处理?

EN

Stack Overflow用户

发布于 2020-02-10 07:26:06

您可以创建一个检查空值的方法。

代码语言:javascript
运行
复制
public String amount (String json){

  if(json == null){

     return "";
  else{
    retrun json;
   }


   use like this `String amount=amount(responce.body().getAmount())`
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60143717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档