服务器响应是json形式

时间:2017-08-22 04:37:52

标签: android android-volley

我想从服务器发送和接收数据。为此,我使用了Volley。代码如下。 Volley可以Json格式接收数据。服务器可以Json格式发送和接收数据。如何将此Json数据转换为用户可读的JAVA格式?其他课程大约有10种方法。以下类包含网络调用的方法,还与MainActivity进行交互。

public class Api_Volley {
    String data;
    String flag;
    public void my_volley_post (String url , JSONObject jsonObject , final Context context ) {
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url  , jsonObject , new Response.Listener(){
            @Override
            public void onResponse(Object response) {

                String flag = response.toString();
                Toast.makeText( context , flag , Toast.LENGTH_LONG ).show();
            }
        },new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(context , "Wrong" , Toast.LENGTH_LONG).show();
                error.printStackTrace();
            }
        });
        ApiVolleySingeltonClass.getInstance(context).addToRequestque(jsonObjectRequest);
    }
}

另一堂课的方法:

  public void showAllOrderByUserId() {
        try {
            data_args.put("userId", 2);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        try {
            data_action.put("action", "showAllOrderByUserId");
            data_action.put("args", data_args);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        route = "/order";
        new Api_Volley().my_volley_post(addUserUrl + route, data_action, context);
    } 

3 个答案:

答案 0 :(得分:1)

  1. 您可以使用

    等json数据

    {“userNodes”:[{“id”:“1”,“name”:“Enamul Haque”}}}

  2. 你可以像凌晨一样使用凌空

     private void doLoginAction() {
    
    
        String url_login = "http://www.lineitopkal.com/android/login.php";
    
    
     StringRequest stringRequest = new StringRequest(Request.Method.POST, url_login,
     new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            //pDialog.dismiss();
    
    
            try {
                JSONObject jsonObject = new JSONObject(response);
                JSONArray loginNodes = jsonObject.getJSONArray("userNodes");
                for (int i = 0; i < loginNodes.length(); i++) {
                    JSONObject jo = loginNodes.getJSONObject(i);
                    String id = jo.getString("id");
                    Log.e("id ::",id);                                
                    String name = jo.getString("name");
                    Log.e("name ::",name);
    
    
                }
            } catch (JSONException e) {
                e.printStackTrace();
              }
    
    
          }
       },
      new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
    
            try {
    
                if (error instanceof TimeoutError ) {
                    //Time out error
    
                }else if(error instanceof NoConnectionError){
                    //net work error
    
                } else if (error instanceof AuthFailureError) {
                    //error
    
                } else if (error instanceof ServerError) {
                    //Erroor
                } else if (error instanceof NetworkError) {
                    //Error
    
                } else if (error instanceof ParseError) {
                    //Error
    
                }else{
                    //Error
                }
                //End
    
    
            } catch (Exception e) {
    
    
            }
    
           }
       }) {
     @Override
     protected Map<String, String> getParams() {
       Map<String, String> params = new HashMap<>();
        //Post parameter like bellow
        params.put("uname", "era@gmail.com");
        params.put("pass", "123456");
    
    
    
         return params;
         }
    
      };
    
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
         }
    

答案 1 :(得分:1)

像这样创建您的响应格式

public class Post {
    long id;
    Date dateCreated;
    String title;
    String author;
    String url;
    String body;
    }

在提出以下请求后

public void my_volley_post (String url , JSONObject jsonObject , final Context context ) {
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url  , jsonObject , new Response.Listener(){
            @Override
            public void onResponse(String response) {
         GsonBuilder gsonBuilder = new GsonBuilder();
         gson = gsonBuilder.create();

//这将是您的实体

      Post post = gson.fromJson(response, Post.class));


        },new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(context , "Wrong" , Toast.LENGTH_LONG).show();
                error.printStackTrace();
            }
        });
        ApiVolleySingeltonClass.getInstance(context).addToRequestque(jsonObjectRequest);
    }

答案 2 :(得分:0)

你必须解析JSON并且必须根据需要显示:

通过这个你可以使用GSON(很容易) 使用此站点将JSON转换为pojo类。 Click here

这些是您可以使用和实施的参考网站:

http://www.vogella.com/tutorials/JavaLibrary-Gson/article.html

https://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

https://kylewbanks.com/blog/tutorial-parsing-json-on-android-using-gson-and-volley