解析JsonObjectRequest

时间:2017-10-10 10:30:13

标签: java android json

我是Android和JAVA的新手,我正在尝试解析json响应。我知道如何解析jsonarray但不知道如何解析jsonobject。谁能告诉我怎么样?以下是我的回复。

{"118":{"garment_color":"Blue","garment_name":"skjhkds","garment_price":"232"},"119":{"garment_color":"hjsadjjs","garment_name":"sdasd","garment_price":"23478"}}

这就是如何解析jsonarray。

public void JSON_DATA_WEB_CALL(){

    jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL,

            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                progressBar.setVisibility(View.INVISIBLE);
                    JSON_PARSE_DATA_AFTER_WEBCALL(response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    requestQueue = Volley.newRequestQueue(this);

    requestQueue.add(jsonArrayRequest);
}

public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){

    for(int i = 0; i<array.length(); i++) {

        GetDataAdapter GetDataAdapter2 = new GetDataAdapter();

        JSONObject json = null;
        try {

            json = array.getJSONObject(i);

            GetDataAdapter2.setImageTitleNamee(json.getString(JSON_IMAGE_TITLE_NAME));
            //GetDataAdapter2.setImageServerLarger(json.getString(JSON_IMAGE_LARGER));

            GetDataAdapter2.setImageServerUrl(json.getString(JSON_IMAGE_URL));
            GetDataAdapter2.setMrp_price(json.getString(JSON_MRP_PRICE));
            GetDataAdapter2.setDisc_price(json.getString(JSON_DISC_PRICE));

        } catch (JSONException e) {

            e.printStackTrace();
        }
        GetDataAdapter1.add(GetDataAdapter2);
    }

    recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, this);

    recyclerView.setAdapter(recyclerViewadapter);
}

请有人帮忙。感谢。

3 个答案:

答案 0 :(得分:1)

在我看来,使用Gson库,在其中为json对象/数组/字符串提供它,它会自动将其解析为java对象。请注意,您必须使用适当的字段定义java类。

编辑:所以这是一个符合建议指南的答案:

首先创建模型类,就像从服务器接收它们一样:

public class MyServerObject {
    MyGarment jsonKeyName;
}

public class MyGarment {
    String garment_color;
    String garment_name;
    String garment_price;
}

接下来,在收到你的json字符串后,使用Gson解析它:

Gson gson = new Gson();
String json= "{"jsonKeyName":{"garment_color":"Blue","garment_name":"skjhkds","garment_price":"232"};

MyServerObject serverObject = gson.fromJson(json, MyServerObject.class);

现在,您可以从服务器对象访问Garment对象,并正确解析所有值。另请注意,如果您正在接收json数组,则可以将该对象添加为MyServerObject.class中的列表。

希望这有帮助。

答案 1 :(得分:0)

as per my above comment

您需要发出JSONObject请求而不是JSONArray请求

尝试此解析您的JSON响应

try {
            JSONObject jsonObject= new JSONObject("Response");

            JSONObject jsonObject1=jsonObject.getJSONObject("118");
            String garment_color=jsonObject1.getString("garment_color");
            String garment_name=jsonObject1.getString("garment_name");
            String garment_price=jsonObject1.getString("garment_price");

            JSONObject jsonObject2=jsonObject.getJSONObject("119");
            String garment_color2=jsonObject1.getString("garment_color");
            String garment_name2=jsonObject1.getString("garment_name");
            String garment_price2=jsonObject1.getString("garment_price");


        } catch (JSONException e) {
            e.printStackTrace();
        }

答案 2 :(得分:0)

使用StringRequest代替JSONObject/JSONArray请求,最后获取如下值:

JSONObject object = new JSONObject(YOUR JSON RESPONSE);
String s1 = object.getJSONObject("118").getString("garment_color");