首页 > 解决方案 > 如何在 Android 中从 JSON 中提取数据

问题描述

如何从以下 JSON 响应中提取数据?它需要显示在回收卡视图中,但我被困在这里需要帮助才能完成该过程。如果您有任何 Android 初学者教程网站链接,请分享给我,以便我阅读并从中受益。

提前致谢。

JSON响应:

{
    "is_retrieved":true,
    "message":"Sites Found",
    "data": [
        {
            "site_id":"1",
            "site_name":"test",
            "site_location":"test loc"
        },
        {
            "site_id":"2",
            "site_name":"test 1",
            "site_location":"test 1 loc"
        }
    ]
}

检索.java

package com.example.myapplication;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import java.util.List;

public class Retrieve {
    @SerializedName("is_retrieved")
    @Expose
    private Boolean isRetrieved;
    @SerializedName("message")
    @Expose
    private String message;
    @SerializedName("data")
    @Expose
    private List<Sites> data = null;

    public Boolean getIsRetrieved() {
        return isRetrieved;
    }

    public void setIsRetrieved(Boolean isRetrieved) {
        this.isRetrieved = isRetrieved;
    }

    public String getMessage() {
        return message;
    }

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

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

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

站点.java

package com.example.myapplication;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Sites {

    @SerializedName("site_id")
    @Expose
    private String siteId;
    @SerializedName("site_name")
    @Expose
    private String siteName;
    @SerializedName("site_location")
    @Expose
    private String siteLocation;

    public String getSiteId() {
        return siteId;
    }

    public void setSiteId(String siteId) {
        this.siteId = siteId;
    }

    public String getSiteName() {
        return siteName;
    }

    public void setSiteName(String siteName) {
        this.siteName = siteName;
    }

    public String getSiteLocation() {
        return siteLocation;
    }

    public void setSiteLocation(String siteLocation) {
        this.siteLocation = siteLocation;
    }
}

我的活动.java

ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);

        Call <Retrieve> call = apiService.getSites();
        call.enqueue(new Callback<Retrieve>() {
            @Override
            public void onResponse(Call<Retrieve> call, Response<Retrieve> response) {
                loadProgress.setVisibility(View.GONE);
                Retrieve Result = (Retrieve) response.body();

                if(!Result.getIsRetrieved()){
                    Toast.makeText(getBaseContext(),Result.getMessage(), Toast.LENGTH_SHORT).show();
                    return;
                }
            }

            @Override
            public void onFailure(Call<Retrieve> call, Throwable t) {
                textViewResult.setText(t.getMessage());
                loadProgress.setVisibility(View.GONE);
                Toast.makeText(getBaseContext(), "Retrieve Failed", Toast.LENGTH_SHORT).show();
            }
        });

标签: androidandroid-studio

解决方案


尝试这个:

 JSONObject jsonObject = new JSONObject();
    try {
        JSONArray jsonArray = jsonObject.getJSONArray("data");

        for (int x = 0;x < jsonArray.length();x++){

            JSONObject jsonObjectInner = jsonArray.getJSONObject(x);

            String site_id = jsonObjectInner.getString("site_id");
            String site_name  = jsonObjectInner.getString("site_name");
            String site_location  = jsonObjectInner.getString("site_location");


            Log.i("data",site_id + "\n" + site_name + "\n" + site_location);
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

推荐阅读