簡體   English   中英

Android Studio Java JSON 取數據問題

[英]Android Studio Java JSON fetching data problem

請幫忙,我的代碼有什么問題,它只顯示零和 NULL

我已經搜索了教程,我什至復制了整個代碼,但我無法從這個 API 獲取數據,我在 int 上的 textviews 返回零,我在 string 上的 textviews 在按下更新按鈕后返回 null。

這是我的 api 鏈接 = api 鏈接

這是結果

package com.example.firstapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class MainActivity extends AppCompatActivity {

private TextView confirmed, recovered, deaths, country, date;
private RequestQueue mQueue;
private Button update;
private int c,r,d;
private String co,da;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    confirmed = findViewById(R.id.confirmed);
    recovered = findViewById(R.id.recovered);
    deaths = findViewById(R.id.deaths);
    country = findViewById(R.id.country);
    date = findViewById(R.id.date);
    update = findViewById(R.id.update);

    mQueue = Volley.newRequestQueue(this);


    update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            jsonParse();
            confirmed.setText(String.valueOf(c));
            recovered.setText(String.valueOf(r));
            deaths.setText(String.valueOf(d));
            country.setText(co);
            date.setText(da);
        }
    });

}

private void jsonParse(){

    String url = "https://covid-api.mmediagroup.fr/v1/cases?country=Philippines";
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {

                        JSONArray jsonArray = response.getJSONArray("All");
                        for (int i = 0; i < jsonArray.length(); i++) {

                            JSONObject cases = jsonArray.getJSONObject(i);
                            c = cases.getInt("confirmed");
                            r = cases.getInt("recovered");
                            d = cases.getInt("deaths");
                            co = cases.getString("country");
                            da = cases.getString("updated");

                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(),
                    error.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    });
    mQueue.add(request);
}
}

我不知道這里有什么問題,有人可以幫忙嗎

我已經修好了,非常感謝。

我的解決方案是我刪除了 JsonArray。

package com.example.firstapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class MainActivity extends AppCompatActivity {

private TextView confirmed, recovered, deaths, country, date;
private RequestQueue mQueue;
private Button update;
private int c,r,d;
private String co,da;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    confirmed = findViewById(R.id.confirmed);
    recovered = findViewById(R.id.recovered);
    deaths = findViewById(R.id.deaths);
    country = findViewById(R.id.country);
    date = findViewById(R.id.date);
    update = findViewById(R.id.update);

    mQueue = Volley.newRequestQueue(this);


    update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            jsonParse();

        }
    });

}

private void jsonParse(){

    String url = "https://covid-api.mmediagroup.fr/v1/cases?country=Philippines";
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, 
new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try{

                        //JSONArray jsonArray = response.getJSONArray();
                        for (int i = 0; i < response.length(); i++) {

                            JSONObject cases = response.getJSONObject("All");
                            c = cases.getInt("confirmed");
                            r = cases.getInt("recovered");
                            d = cases.getInt("deaths");
                            co = cases.getString("country");
                            da = cases.getString("updated");
                            confirmed.setText(String.valueOf(c));
                            recovered.setText(String.valueOf(r));
                            deaths.setText(String.valueOf(d));
                            country.setText(co);
                            date.setText(da);


                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(),
                    error.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    });
    mQueue.add(request);
}
}

我替換了 JSONObject case = jsonArray.getJSONObject(i); 使用 JSONObject 案例 = response.getJSONObject("All"); 並刪除了 JSONArray jsonArray = response.getJSONArray(); 因為沒有必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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