如何在android studio中创建动态响应类,在正文中更改键和值,不固定键和值

问题描述

我有一个问题,我的数据不固定,有时数据会发生变化。我正在尝试创建一个响应类而不在类中创建键或 getter/setter 方法。 没有这个:

(@Serializedname("Sr No")@Exposeprivate Integer srNo;)
"data": [
        {
            "Sr No": 6,"Status": "Not Approved","URN_No": "MOA04A000401","Date": "28/12/2020","Doc No": "Exp/20-21/37","Account Name": "ABC ENTERPRISE LTD.","Category": "Export","City": "Ahmedabad"
        },{
           ......
           ......
       }
"data": [
            {
                "Sr No": 6,"Urn_No": "MOA04A000401","City": "Bomby","State": "Maharastra"
                "Contry": "India"
            },{
               ......
               ......
           }
    ]

邮递员数据(此数据不稳定,此数据有时会发生变化):

{
    "settings": {
        "success": "1","message": "Data found successfully.","fields": [
            "Sr No","Status","URN_No","Date","Doc No","Account Name","Category","City"
        ]
    },"data": [
        {
            "Sr No": 6,{
            "Sr No": 64,"URN_No": "MOA04A000400","Doc No": "Dom/20-21/128","Account Name": "KINJAL CHEMICALS","Category": "Domestic","City": "Ahmedabad"
        }
   ]
}

响应

public class ReportApplyNowResponse implements Serializable {

    @Serializedname("settings")
    @Expose
    private Settings settings;
    @Serializedname("data")
    @Expose
    private List<Data> data = null;

    public Settings getSettings() {
        return settings;
    }

    public void setSettings(Settings settings) {
        this.settings = settings;
    }

    public List<Data> getData() {
        return data;
    }

    public void setData(List<Data> data) {
        this.data = data;
    }

    public class Settings implements Serializable {

        @Serializedname("success")
        @Expose
        private String success;
        @Serializedname("message")
        @Expose
        private String message;
        @Serializedname("fields")
        @Expose
        private List<String> fields = null;

        public String getSuccess() {
            return success;
        }

        public void setSuccess(String success) {
            this.success = success;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public List<String> getFields() {
            return fields;
        }

        public void setFields(List<String> fields) {
            this.fields = fields;
        }
    }
    public class Data implements Serializable{

        // For ex: I will remove "Sr no",then "Sr no" not arrive in response
        @Serializedname("Sr No")
        @Expose
        private Integer srNo;
        @Serializedname("Status")
        @Expose
        private String status;
        @Serializedname("Urn_no")
        @Expose
        private String urnNo;
        @Serializedname("Date")
        @Expose
        private String date;
        @Serializedname("Doc No")
        @Expose
        private String docNo;
        @Serializedname("Account Name")
        @Expose
        private String accountName;
        @Serializedname("Lead_Soruce")
        @Expose
        private String leadSoruce;
        @Serializedname("Category")
        @Expose
        private String category;
        @Serializedname("City")
        @Expose
        private String city;
        @Serializedname("Sales Executive")
        @Expose
        private String salesExecutive;
        @Serializedname("Industry")
        @Expose
        private String industry;

        public Integer getSrNo() {
            return srNo;
        }

        public void setSrNo(Integer srNo) {
            this.srNo = srNo;
        }

        public String getStatus() {
            return status;
        }

        public void setStatus(String status) {
            this.status = status;
        }

        public String getUrnNo() {
            return urnNo;
        }

        public void setUrnNo(String urnNo) {
            this.urnNo = urnNo;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getDocNo() {
            return docNo;
        }

        public void setDocNo(String docNo) {
            this.docNo = docNo;
        }

        public String getAccountName() {
            return accountName;
        }

        public void setAccountName(String accountName) {
            this.accountName = accountName;
        }

        public String getLeadSoruce() {
            return leadSoruce;
        }

        public void setLeadSoruce(String leadSoruce) {
            this.leadSoruce = leadSoruce;
        }

        public String getCategory() {
            return category;
        }

        public void setCategory(String category) {
            this.category = category;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getSalesExecutive() {
            return salesExecutive;
        }

        public void setSalesExecutive(String salesExecutive) {
            this.salesExecutive = salesExecutive;
        }

        public String getIndustry() {
            return industry;
        }

        public void setIndustry(String industry) {
            this.industry = industry;
        }
    }

}

Java 代码(我在这里调用 API):

 restCall.reportApplyNow("13",reportsName,String.valueOf(jsonElement))
                .subscribeOn(Schedulers.io())
                .observeOn(Schedulers.newThread())
                .subscribe(new Subscriber<ReportApplyNowResponse>() {
                    @Override
                    public void onCompleted() {

                    }
                    @Override
                    public void onError(Throwable e) {
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                tools.stopLoading();
                                Tools.toast(getActivity(),/* e.getMessage()*/ getString(R.string.something_went_wrong),VariableBag.Error);
                            }
                        });
                    }

                    @Override
                    public void onNext(ReportApplyNowResponse reportApplyNowResponse) {
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                tools.stopLoading();

                                if (!reportApplyNowResponse.getSettings().getSuccess().equals("") && reportApplyNowResponse.getSettings().getSuccess().equalsIgnoreCase(VariableBag.SUCSESS_CODE)) {
                                    if (reportApplyNowResponse.getData() != null && reportApplyNowResponse.getData().size() > 0) {
                                        Tools.toast(getContext(),reportApplyNowResponse.getSettings().getMessage(),VariableBag.success);

                                        Bundle  bundle = new Bundle();
                                        bundle.putSerializable("reprtViewResponse",reportApplyNowResponse);
                                        Intent intent = new Intent(getContext(),ReportViewActivity.class);
                                        intent.putExtras(bundle);
                                        startActivity(intent);
                                    }
                                } else {
                                    //tools.stopLoading();
                                    Tools.toast(getContext(),VariableBag.Error);
                                    // Tools.toast(FollowUpActivity.this,getFollowupListingDashboardResponse.getSettings().getMessage(),VariableBag.Error);
                                    //showDataView(reportsListResponse.getSettings().getMessage());
                                }
                            }
                        });

                    }
                });

RestCall

@FormUrlEncoded
    @POST("Mobile_Api_Applay")
    Single<ReportApplyNowResponse> reportApplyNow(
            @Field("user_id") String user_id,@Field("Report_Name") String Report_Name,@Field("ReportFieldsstring") String ReportFieldsstring
    );

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)