【发布时间】:2016-09-09 05:32:04
【问题描述】:
我已使用改造 sdk 进行 api 调用。我有 GSON sdk 用于解析响应。我有一些难以解析的 json 响应。我已经在下面发布了要解析的json响应。我需要获取地址行arraylist。
我正在从列表中获取空数据。
{
"QA": {
"CreditsUsed": 1,
"State": "Results"
},
"SearchResult": {
"VerifyLevel": "Verified",
"Address": {
"AddressLine": [{
"LineContent": "None",
"Label": {},
"Line": "2500Kearney St"
}, {
"LineContent": "None",
"Label": {},
"Line": {}
}, {
"LineContent": "None",
"Label": {},
"Line": {}
}, {
"Label": "City name",
"Line": "Springfield"
}, {
"Label": "State code",
"Line": "MO"
}, {
"Label": {},
"Line": "65803-5048"
}, {
"Label": "Country",
"Line": "UNITED STATES OF AMERICA"
}],
"DPVStatus": "DPVNotConfigured"
},
"VerificationFlags": {
"StateProvinceChanged": true,
"PostCodeCorrected": true
}
}
}
模型类
public class DineshValues {
String Country;
String Search;
@SerializedName("LineContent")
String LineContent;
@SerializedName("Line")
String Line;
@SerializedName("AddressLine")
List<AddressLine> data=new ArrayList();
public List<AddressLine> getData() {
return data;
}
public String getLineContent() {
return LineContent;
}
public void setLineContent(String lineContent) {
LineContent = lineContent;
}
public String getLine() {
return Line;
}
public void setLine(String line) {
Line = line;
}
public void setData(List<AddressLine> data) {
this.data = data;
}
public String getCountry() {
return Country;
}
public void setCountry(String country) {
Country = country;
}
public String getSearch() {
return Search;
}
public void setSearch(String search) {
Search = search;
}
}
AddressLine 类文件
public class AddressLine {
@SerializedName("LineContent")
@Expose
private String lineContent;
@SerializedName("Label")
@Expose
private String label;
@SerializedName("Line")
@Expose
private String line;
/**
*
* @return
* The lineContent
*/
public String getLineContent() {
return lineContent;
}
/**
*
* @param lineContent
* The LineContent
*/
public void setLineContent(String lineContent) {
this.lineContent = lineContent;
}
/**
*
* @return
* The label
*/
public String getLabel() {
return label;
}
/**
*
* @param label
* The Label
*/
public void setLabel(String label) {
this.label = label;
}
/**
*
* @return
* The line
*/
public String getLine() {
return line;
}
/**
*
* @param line
* The Line
*/
public void setLine(String line) {
this.line = line;
}
这样称呼
RetrofitRest.getClient().getLogin("1111111" ,obj,new Callback<DineshValues >() {
@Override
public void success(DineshValues arg0, Response arg1) {
// TODO Auto-generated method stub
Log.e("size",arg0.getData+"");
}
}
【问题讨论】:
-
你有什么异常吗?如果是,请编辑问题并添加完整的 logcat 报告。我猜当您尝试打印 arg0.getData 时,它正在打印对象地址。在 AddressLine 覆盖 toString 方法中做一件事。或者去 arg0.getData.get(0).getLineContent()
-
09-09 05:54:53.515: E/AndroidRuntime(1411): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 我在使用 arg0.getData.get( 0).getLineContent().
-
我认为我在为给定的响应创建 pojo 类方面做错了......你能检查我的 pojo 类吗?
-
请edit有异常消息的问题
-
每个 Label 和 Line 属性都不是字符串,它们是对象,如
{}所述。你确定你的 Java 类是正确的吗?
标签: android json gson retrofit