有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在安卓中将JSONObject转换为字符串数组或ArrayList<String>

我将获取JSONObject的值,并将其放入字符串数组或ArrayList中。问题是我有一个JSONObject而不是JSONArray,而且我无法更改Web服务。 这是我的JSONObject:

{“THR”:“THR”, “MHD”:“MHD”, “KIH”:“کیش”, “IFN”:“IFN”, “SYZ”:“SYZ”, “TBZ”:“TBZ”, “ABD”:“ABD”

这是我的代码:

    ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressbar);
    RequestQueue queue = Volley.newRequestQueue(getApplicationContext());

    progressbar.setVisibility(View.VISIBLE);
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Toast.makeText(getApplicationContext(), "Response", Toast.LENGTH_SHORT).show();
            progressbar.setVisibility(View.GONE);

            try {
                JSONArray array = new JSONArray(response);
                Toast.makeText(getApplicationContext(), "Try", Toast.LENGTH_LONG).show();
            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Catch", Toast.LENGTH_LONG).show();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
            progressbar.setVisibility(View.GONE);
        }
    });

    queue.add(stringRequest);

当我调试代码时,它会被捕获!!! 无论如何,它不会去尝试

我想要这样的东西:

String[] strArray = {"تهران","مشهد","کیش","اصفهان","شیراز","تبریز","آبادان"};

我怎么才能拿到


共 (2) 个答案

  1. # 1 楼答案

    添加了对代码的更改

    ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressbar);
        RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
        ArrayList<String> answersStringArray= new ArrayList<String>(); // define string array
    
    progressbar.setVisibility(View.VISIBLE);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Toast.makeText(getApplicationContext(), "Response", Toast.LENGTH_SHORT).show();
                progressbar.setVisibility(View.GONE);
    
                try {
                    JJSONObject jsonObject = new JSONObject(response); //cast responce to jsonObject
                    Iterator<?> keys = jsonObject.keys(); // get the keys of the jsonObject
                    while( keys.hasNext() ) {//iterrate over them
                        String key = (String)keys.next();
                        answersStringArray.add(jsonObject.optString(key));}// add the string to our array of stings
    
    
              } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Catch", Toast.LENGTH_LONG).show();
                }
    
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
                progressbar.setVisibility(View.GONE);
            }
        });
    
        queue.add(stringRequest);
    
  2. # 2 楼答案

    public static void main(String[] args) {
    //building your jsonObject(took only the 1st four ;P )
            JSONObject objJsonObject = new JSONObject();
            objJsonObject.put("THR", "تهران");
            objJsonObject.put("MHD", "مشهد");
            objJsonObject.put("KIH", "کیش");
            objJsonObject.put("IFN", "اصفهان");
            String [] strArray= new String[objJsonObject.length()];
            int i = 0;
    //adding your required data into a array
            for (String key: objJsonObject.keySet()) {
                strArray[i] = objJsonObject.getString(key);
                i++;
            }
    //printing your data
            for (int j = 0; j < strArray.length; j++) {
                System.out.println(strArray[j]);
            }
    }
    

    希望这有帮助