Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JSONObject转换为字符串数组或ArrayList<;字符串>;在android中_Java_Android_Arrays_Jsonobject - Fatal编程技术网

Java 如何将JSONObject转换为字符串数组或ArrayList<;字符串>;在android中

Java 如何将JSONObject转换为字符串数组或ArrayList<;字符串>;在android中,java,android,arrays,jsonobject,Java,Android,Arrays,Jsonobject,我将获取JSONObject的值,并将其放入字符串数组或ArrayList中。问题是我有一个JSONObject而不是JSONArray,而且我不能更改Web服务。 这是我的JSONObject: {“THR”:“THR”, “MHD”:“MHD”, “KIH”:“KIH”, “IFN”:“IFN”, “SYZ”:“SYZ”, “TBZ”:“TBZ”, “阿布德”:“阿布德” 这是我的代码: ProgressBar progressbar = (ProgressBar) findView

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

{“THR”:“THR”, “MHD”:“MHD”, “KIH”:“KIH”, “IFN”:“IFN”, “SYZ”:“SYZ”, “TBZ”:“TBZ”, “阿布德”:“阿布德”

这是我的代码:

    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);
如何获取它?

公共静态void main(字符串[]args){
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]);
        }
}
//构建jsonObject(仅使用前四个;P) JSONObject objJsonObject=新的JSONObject(); objJsonObject.put(“THR”、“تهان”); objJsonObject.put(“MHD”、“مشهد”); objJsonObject.put(“KIH”、“ک1740;ش”); objJsonObject.put(“IFN”、“افهان”); String[]strArray=新字符串[objJsonObject.length()]; int i=0; //将所需数据添加到数组中 for(字符串键:objJsonObject.keySet()){ strArray[i]=objJsonObject.getString(键); i++; } //打印数据 对于(int j=0;j

希望这有助于……

为代码添加了更改

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);
ProgressBar-ProgressBar=(ProgressBar)findViewById(R.id.ProgressBar);
RequestQueue=Volley.newRequestQueue(getApplicationContext());
ArrayList answersStringaray=新建ArrayList();//定义字符串数组
progressbar.setVisibility(View.VISIBLE);
StringRequest StringRequest=新建StringRequest(Request.Method.GET,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(getApplicationContext(),“Response”,Toast.LENGTH\u SHORT.show();
progressbar.setVisibility(View.GONE);
试一试{
JJSONObject jsonObject=新的jsonObject(响应);//对jsonObject强制转换响应
迭代器keys=jsonObject.keys();//获取jsonObject的键
while(keys.hasNext()){//iterrate在它们上面
字符串键=(字符串)键。下一步();
add(jsonObject.optString(key));}//将字符串添加到stings数组中
}捕获(JSONException e){
e、 printStackTrace();
Toast.makeText(getApplicationContext(),“Catch”,Toast.LENGTH_LONG.show();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(getApplicationContext(),“Error”,Toast.LENGTH_SHORT.show();
progressbar.setVisibility(View.GONE);
}
});
添加(stringRequest);

对象无法强制转换到阵列您能试试吗?JSONArray数组=新的JSONArray(“[”+响应+“]));哦,不,我的JSONObject的长度太长了,这只是我JSONObject的一部分。我这样做是为了简化问题。@AlirezaNoorali我看不出JSONObject的长度在这里有多重要?你能说得更清楚吗?就你的问题而言,上面的代码提供了你所需要的。。。
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);