簡體   English   中英

如何在Android中使用翻新來檢索JSON響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM