2016-06-08 37 views
-2

我将获取JSONObject的值并将其放入String Array或ArrayList中。问题是我有一个JSONObject而不是JSONArray,并且我无法更改Webservice。 这是我的JSONObject:如何将JSONObject转换为字符串数组或ArrayList <String> android

{ “THR”: “تهران”, “MHD”: “مشهد”, “KIH”: “کیش”, “IFN”: “اصفهان”, “SYZ” : “شیراز”, “TBZ”: “تبریز”, “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); 

当我调试我的代码,它会赶上! 不管怎样,它都不会去TRY!

我想是这样的:

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

我怎样才能得到它呢?

+0

对象无法投射到阵列 –

+1

你可以试试这个? JSONArray array = new JSONArray(“[”+ response +“]); – PankajAndroid

回答

0

添加代码的修改

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); 
+1

是的,就是这样!!!谢谢。 –

0
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]); 
     } 
} 

希望这有助于....

+0

哦,不,我的JSONObject的长度太长了,这只是我的JSONObject的一部分,我这样做是为了简化问题。 –

+0

@AlirezaNoorali i没有看到你的jsonObject的长度在这里有多重要吗?你可以让自己更清楚吗?就你的问题而言,上面的代码给你你需要的东西... – Abhishek

相关问题