将json解析为android内部的parseNetwork字符串

问题描述 投票:0回答:1

我有一个用于注册学生的web api,在我发布学生后它返回了他的id,我想将这个id从json解析为字符串并存储在变量中供以后使用,响应以这种形式表示1234,表示用户id没有“ “这是我的代码

 try {
                            RequestQueue requestQueue = Volley.newRequestQueue(Register.this);
                            String URL = "http://192.168.0.148/WebApplication7/api/users";
                            JSONObject jsonBody = new JSONObject();
                            jsonBody.put("tblRegisteredUsers_UserName", userName.getText().toString().trim());
                            jsonBody.put("tblRegisteredUsers_FirstName", firstName.getText().toString());
                            jsonBody.put("tblRegisteredUsers_SecondName", secondName.getText().toString());
                            jsonBody.put("tblRegisteredUsers_LastName", familyName.getText().toString());
                            jsonBody.put("tblRegisteredUsers_Country", nationality.toString());
                            jsonBody.put("tblRegisteredUsers_MobileNumber", mobileNo.getText().toString());
                            jsonBody.put("tblRegisteredUsers_Email", email.getText().toString());
                            jsonBody.put("tblRegisteredUsers_Nationality", nationality.toString());
                            jsonBody.put("tblRegisteredUsers_Active", "false");
                            jsonBody.put("tblRegisteredUsers_PayType", saved_payment_type.toString());
                            jsonBody.put("tblRegisteredUsers_DraftInfo", saved_payment_type.toString());
                            jsonBody.put("tblRegisteredUsers_AccountStates", "pending");
                            jsonBody.put("tblRegisteredUsers_Password", encrypt(password.getText().toString()));
                            jsonBody.put("tblRegisteredUsers_registrationDate", DateFormat.getDateTimeInstance().format(new Date()).toString());
                            jsonBody.put("tblRegisteredUsers_nickName", userName.getText().toString().trim());
                            jsonBody.put("tblRegisteredUsers_Activeby_FKID", "-1");
                            jsonBody.put("tblRegisteredUsers_Year", "1");
                            jsonBody.put("tblRegisteredUsers_ActivebyPayment", "false");
                            jsonBody.put("tblRegisteredUsers_intensified", contract_Type.toString());


                            final String requestBody = jsonBody.toString();

                            StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                                @Override
                                public void onResponse(String response) {

                                        if (response.equals("success")) {
                                            //login authenticated. Start the next activity of your app
                                            Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show();
                                            // Toast.makeText(getApplicationContext(), "registered successfully ", Toast.LENGTH_SHORT).show();


                                        } else {
                                            //login failed. prompt to re-enter the credentials
                                             Toast.makeText(Register.this, "Failed to log In", Toast.LENGTH_SHORT).show();

                                            // Log.i("VOLLEY", response);
                                            Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show();
                                        }
                                    }
                            }, new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                    Log.e("VOLLEY", error.toString());
                                }
                            }) {
                                @Override
                                public String getBodyContentType() {
                                    return "application/json; charset=utf-8";
                                }

                                @Override
                                public byte[] getBody() throws AuthFailureError {
                                    try {
                                        return requestBody == null ? null : requestBody.getBytes("utf-8");
                                    } catch (UnsupportedEncodingException uee) {
                                        VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                                        return null;
                                    }
                                }

                                @Override
                                protected Response<String> parseNetworkResponse(NetworkResponse response) {
                                    try {

    /**
  First you will have to convert the NetworkResponse into a jsonstring.
  Then that json string can be converted into the required java object
   using gson
   **/
                                        addEncodeing2Request(response);
                                        return 
 super.parseNetworkResponse(response);
                                    } catch (UnsupportedEncodingException e) {
                                        e.printStackTrace();
                                        return Response.error(new ParseError(e));
                                    }
                                }
                            };

                            requestQueue.add(stringRequest);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }


                    } else {
                        Toast.makeText(getApplicationContext(), "الرجاء قيول لائحة النظم", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(getApplicationContext(), "password does not match", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(getApplicationContext(), "password is not strong", Toast.LENGTH_SHORT).show();
            }
        }
    });



}

顺便说一句,解析网络方法中的return语句有一个编译错误,这里是响应

                     {
                     "tblRegisteredUsers_UserPKID": 3034,
                         "tblRegisteredUsers_UserName": "hi21323",
                             "tblRegisteredUsers_Password": null,
"tblRegisteredUsers_FirstName": null,
"tblRegisteredUsers_SecondName": null,
"tblRegisteredUsers_LastName": null,
"tblRegisteredUsers_Country": null,
"tblRegisteredUsers_City": null,
"tblRegisteredUsers_Gender": null,
"tblRegisteredUsers_BirthDate": null,
"tblRegisteredUsers_Education": null,
"tblRegisteredUsers_Job": null,
"tblRegisteredUsers_HomePhone": null,
"tblRegisteredUsers_MobileNumber": null,
"tblRegisteredUsers_FaxNumber": null,
"tblRegisteredUsers_Email": null,
"tblRegisteredUsers_HowYouKnowUS": null,
"tblRegisteredUsers_Nationality": null,
"tblRegisteredUsers_Active": null,
"tblRegisteredUsers_PayType": null,
"tblRegisteredUsers_photo": null,
"tblRegisteredUsers_DraftInfo": null,
"tblRegisteredUsers_AccountStates": null,
"tblRegisteredUsers_registrationDate": null,
"tblRegisteredUsers_nickName": null,
"tblRegisteredUsers_Activeby_FKID": null,
"tblRegisteredUsers_ActivationDate": null,
"tblRegisteredUsers_Year": null,
"tblRegisteredUsers_ActivebyPayment": null,
"tblRegisteredUsers_intensified": null,
"tblRegisteredUsers_Shiping_Address": null,
"tblRegisteredUsers_intensified_Status": null,
"tblRegisteredUsers_ReactivationDateTime": null,
"tblRegisteredUsers_ActivebyPayment_Intensive": null,
"tblRegisteredUsers_ActivationDate_IntensiveChange": null,
"tblRegisteredUsers_Installment": null,
"tblRegisteredUsers_InstallmentActivationDate": null,
"tblRegisteredUsers_Installment_ActivePayment": null,
"tblRegisteredUsers_Hide": null,
"tblRegisteredUsers_Hide_User_FK_ID": null,
"tblRegisteredUsers_Hide_DateTime": null,
"tblRegisteredUsers_Renew_Datetime": null

}

任何帮助,将不胜感激

android json android-volley
1个回答
0
投票

如果你有一个特定的Json对象/结构,你可能想在某处实现MyStructureObject.class并将所有这些变量添加到它。

MyStructureObject{
String id;
   public String getIdField(){
      return id;
   }
... // add all other variables of your json structure
}

您可以使用com.google.code.gson(from maven gradle repository)等JSON库,并从JsonString中序列化(或反序列化)JsonObject。

MySturctureObject instance = new Gson().fromJson(yourJsonString,MyStructureObject.class);
String id = instance.getIdField();

我希望这有点帮助:)我已经成功地在我自己的android java / libgdx应用程序中添加了gson库,但是也许你想要使用另一个库。这只是一个建议。

© www.soinside.com 2019 - 2024. All rights reserved.