[英]How to retrieve json response using retrofit in android
我正在從第三方API訪問數據。 它給出了這個回應。
這是第三方API
我無法在textview中得到答復。 請給我一些解決方案。 這是編寫e.setText(arg0.get(1).getProductBaseInfo().getProductAttributes()。getTitle()。toString())的正確方法嗎?
{
"productInfoList": [{
"productBaseInfo": {
"productIdentifier": {
"productId": "MOBDP6W6MCUWCFGV",
"categoryPaths": {
"categoryPath": [[{
"title": "Mobiles & Accessories"
},
{
"title": "Mobiles"
}]]
}
},
"productAttributes": {
"title": "Sony Xperia C Black",
}
}]
}
public class productInfoList {
private productBaseInfo productBaseInfo;
private productShippingBaseInfo productShippingBaseInfo;
private String offset;
public productBaseInfo getProductBaseInfo() {
return productBaseInfo;
}
public void setProductBaseInfo(productBaseInfo productBaseInfo) {
this.productBaseInfo = productBaseInfo;
}
public productShippingBaseInfo getProductShippingBaseInfo() {
return productShippingBaseInfo;
}
public void setProductShippingBaseInfo(
productShippingBaseInfo productShippingBaseInfo) {
this.productShippingBaseInfo = productShippingBaseInfo;
}
public String getOffset() {
return offset;
}
public void setOffset(String offset) {
this.offset = offset;
}
}
public class productBaseInfo {
private productIdentifier productIdentifier;
private productAttributes productAttributes;
public productIdentifier getProductIdentifier() {
return productIdentifier;
}
public void setProductIdentifier(productIdentifier productIdentifier) {
this.productIdentifier = productIdentifier;
}
public productAttributes getProductAttributes() {
return productAttributes;
}
public void setProductAttributes(productAttributes productAttributes) {
this.productAttributes = productAttributes;
}
}
public class productAttributes {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
public interface Flipkart_Interface {
@Headers({ "Fk-Affiliate-Token:asdf",
"Fk-Affiliate-Id:weforteafsd1g" })
@GET("/search/json?query=sony&resultCount=10")
void search(Callback<List<productInfoList>> callback);
}
public class MainActivity extends ActionBarActivity {
List<productInfoList> flip = new ArrayList<productInfoList>();
TextView e;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e = (TextView) findViewById(R.id.sear);
String ENDPOINT = "https://affiliate-api.flipkart.net/affiliate";
RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ENDPOINT)
.build();
/*
* productBaseInfo api1 = adapter.create(productBaseInfo.class);
* productInfoList api2 = adapter.create(productInfoList.class);
* productAttributes api3 = adapter.create(productAttributes.class);
*/
Flipkart_Interface api = adapter.create(Flipkart_Interface.class);
api.search(new Callback<List<productInfoList>>() {
@Override
public void success(List<productInfoList> arg0, Response arg1) {
// TODO Auto-generated method stub
e.setText(arg0.get(1).getProductBaseInfo()
.getProductAttributes().getTitle().toString());
}
@Override
public void failure(RetrofitError arg0) {
// TODO Auto-generated method stub
}
});
}
}
我無法在textview中得到答復。 請給我一些解決方案。 這是編寫e.setText(arg0.get(1).getProductBaseInfo().getProductAttributes()。getTitle()。toString())的正確方法嗎?
查看JSON,您將獲得一個productInfoList
元素的單元素List
,並且正在訪問索引1。
嘗試訪問索引零,並確保您的List
包含數據:
@Override
public void success(List<productInfoList> arg0, Response arg1) {
// TODO Auto-generated method stub
Log.d("MyApp", "arg0 size: " + arg0.size());
//make sure the List has data
if (arg0.size() > 0){
//log the value
Log.d("MyApp", "Title Value: " + arg0.get(0).getProductBaseInfo().getProductAttributes().getTitle().toString());
e.setText(arg0.get(0).getProductBaseInfo()
.getProductAttributes().getTitle().toString());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.