Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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 json数组值从volley转换为hashmap字符串,string_Java_Android_Json_String_Android Volley - Fatal编程技术网

Java json数组值从volley转换为hashmap字符串,string

Java json数组值从volley转换为hashmap字符串,string,java,android,json,string,android-volley,Java,Android,Json,String,Android Volley,我请求使用凌空截击从jsonArray构建滑块图像,我不知道如何将jsonArray的值放入hashmap。。它一直在说空对象 错误消息 Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference JSON数组值 [ {"cPID":"62001002280293829",

我请求使用凌空截击从
jsonArray
构建滑块图像,我不知道如何将
jsonArray
的值放入
hashmap
。。它一直在说空对象

错误消息

Attempt to invoke virtual method 'java.lang.Object
java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference
JSON数组值

[
     {"cPID":"62001002280293829",
      "image":"http:\/\/ibigcreative.com\/dev\/assets\/images\/slider\/rsch.jpg"},
     {"cPID":"62001002020254584",
      "image":"http:\/\/ibigcreative.com\/dev\/assets\/images\/slider\/penang.jpg"},
     {"cPID":"62001002050264258",
      "image":"http:\/\/ibigcreative.com\/dev\/assets\/images\/slider\/guardian.jpg"}
]
然后我想把这个值像这样放到
hashmap
内部
onCreate()

我不知道如何从
volley
JsonArray
中输入值,这是我的请求,但错误为null

private void getSlider(){

        String tag_string_req = "sliderList";
        // Showing progress dialog before making http request

        JsonArrayRequest mostReq = new JsonArrayRequest(AppConfig.URL_Slider, new Response.Listener<JSONArray>() {

            @Override
            public void onResponse(JSONArray response) {
                Log.d(TAG, response.toString());
                try  {
                    for (int i = 0; i < 5; i++) {
                        JSONObject jObj = response.getJSONObject(i);
                        url_maps.put(jObj.getString("cPID"), jObj.getString("image"));
                    }
                }
                catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                VolleyLog.d(TAG, "Error: " + "Error Data Occured!!" + error.getMessage());
                Toast.makeText(getContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();
                hideDialog();

            }
        }) ;
        AppController.getInstance().addToRequestQueue(mostReq, tag_string_req);
    }
private void getSlider(){
String tag\u String\u req=“sliderList”;
//在发出http请求之前显示进度对话框
JsonArrayRequest mostReq=newjsonarrayrequest(AppConfig.URL\u Slider,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
试一试{
对于(int i=0;i<5;i++){
JSONObject jObj=response.getJSONObject(i);
url_maps.put(jObj.getString(“cPID”)、jObj.getString(“image”);
}
}
捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(标记“Error:”+“出现错误数据!!”+Error.getMessage());
Toast.makeText(getContext(),
error.getMessage(),Toast.LENGTH_LONG).show();
hideDialog();
}
}) ;
AppController.getInstance().addToRequestQueue(mostReq,标记字符串请求);
}

在截击中接受了值请求,它显示在
Logcat
上。。但是
hashmap
上为空。。如果我的代码有错误,请告诉我,抱歉,只是新手,仍在学习

您正在通过键进行迭代。。。您需要遍历键和值

for (url_maps.Entry<String, String> url_map : url_maps.entrySet()) {
    String key = url_map.getKey();
    String value = url_map.getValue();
    // ...
}
URLMaps类可能如下所示

public class URLMaps{
    public string name = "";
    public string image = "";

    //constructor
    public URLMaps(string a, string b) {
        name = a;
        image = b;
    }

    public string getName() {
        return name;
    }

    public string getImage() {
        return image;
    }
}
然后,要利用您可以使用的课程:

urlMaps.getName(), or urlMaps.getValue() in your DefaultSliderView.image()
还要注意的是,由于这是一个类,您可以存储它们的数组或列表,因此您可以重新使用for循环

For(URLMap-URLMap:UrlMaps[])
//其中UrlMaps是包含多个UrlMaps实例的对象


最后,我已经很久没有用Java编写代码了,所以这段代码没有经过测试,但应该可以帮助您找到解决方案。

保留错误。。我认为我在地图绘制上犯了错误。。请告诉我,在
volleyRequest
value中要做什么..我看到了你的问题。。。检查我的解决方案的顶部。我认为您只是通过键进行迭代,您还需要通过值进行迭代,以获得数据。
ObjectMapper mapper = new ObjectMapper();

string StringJson = "[
     {"cPID":"62001002280293829",
      "image":"http:\/\/ibigcreative.com\/dev\/assets\/images\/slider\/rsch.jpg"},
     {"cPID":"62001002020254584",
      "image":"http:\/\/ibigcreative.com\/dev\/assets\/images\/slider\/penang.jpg"},
     {"cPID":"62001002050264258",
      "image":"http:\/\/ibigcreative.com\/dev\/assets\/images\/slider\/guardian.jpg"}
]";

// For the following line to work you will need to make a URLMaps Class to hold the objects

URLMaps urlMaps = mapper.readValue(StringJson , URLMaps.class);
public class URLMaps{
    public string name = "";
    public string image = "";

    //constructor
    public URLMaps(string a, string b) {
        name = a;
        image = b;
    }

    public string getName() {
        return name;
    }

    public string getImage() {
        return image;
    }
}
urlMaps.getName(), or urlMaps.getValue() in your DefaultSliderView.image()