问题描述
我想用json创建一个登录和注册系统。
我想首先获取url的内容,然后解析json字符串。
Json字符串示例:
i want to create a login and register system with json .i want first get content of url , next parse the json string .Json String sample :
{ "employee":{"mesg":"username is exsist!","id":0,"name":0,"username":0,"email":0,"status":500} }
我只需要mesg或状态。
我无法解析它。每当我想要解析这个字符串时,我的应用程序就会强制停止
i just need mesg Or status .i cant parse it . every time i want parse this string , my application give force stop
这是我的代码:
package com.sourcey.materiallogindemo;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import butterknife.Bind;
import butterknife.ButterKnife;
public class SignupActivity extends AppCompatActivity {
//URL to get JSON Array
//JSON Node Names
public String nurl;
private static final String TAG = "SignupActivity";
@Bind(R.id.input_name) EditText _nameText;
@Bind(R.id.input_email) EditText _emailText;
@Bind(R.id.input_tell) EditText _tellText;
@Bind(R.id.input_password) EditText _passwordText;
@Bind(R.id.btn_signup) Button _signupButton;
@Bind(R.id.link_login) TextView _loginLink;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
ButterKnife.bind(this);
_signupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signup();
}
});
_loginLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Finish the registration screen and return to the Login activity
finish();
}
});
}
public void signup() {
Log.d(TAG, "Signup");
if (!validate()) {
onSignupFailed();
return;
}
_signupButton.setEnabled(false);
final ProgressDialog progressDialog = new ProgressDialog(SignupActivity.this,
R.style.AppTheme_Dark_Dialog);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("در حال انجام عملیات...");
progressDialog.show();
String name = _nameText.getText().toString();
String email = _emailText.getText().toString();
String tell = _tellText.getText().toString();
String password = _passwordText.getText().toString();
// TODO: Implement your own signup logic here.
nurl = "http://someurl/json/user.php?type=register&mobile="+tell+"&p="+password+"&email="+email+"&name="+name;
//new JSONParse().execute();
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
onSignupSuccess();
progressDialog.dismiss();
}
}, 3000);
}
public void onSignupSuccess() {
_signupButton.setEnabled(true);
setResult(RESULT_OK, null);
finish();
}
public void onSignupFailed() {
Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
_signupButton.setEnabled(true);
}
public boolean validate() {
boolean valid = true;
String name = _nameText.getText().toString();
String email = _emailText.getText().toString();
String tell = _tellText.getText().toString();
String password = _passwordText.getText().toString();
if (name.isEmpty() || name.length() < 3) {
_nameText.setError("at least 3 characters");
valid = false;
} else {
_nameText.setError(null);
}
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError("enter a valid email address");
valid = false;
} else {
_emailText.setError(null);
}
if (tell.isEmpty() || !android.util.Patterns.PHONE.matcher(tell).matches()) {
_tellText.setError("enter a valid phone number");
valid = false;
} else {
_tellText.setError(null);
}
if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
_passwordText.setError("between 4 and 10 alphanumeric characters");
valid = false;
} else {
_passwordText.setError(null);
}
return valid;
}
}
现在我不知道我能做些什么解析字符串并获得状态或mesg,感谢掌舵。我非常需要这个,对不成熟的问题感到抱歉。
问候
now i dont know what can i do exactly to parse string and get just status or mesg, thanks for helm . i need this very much and sorry for amature question .regards
推荐答案
使用Volley库从网址获取JSON响应,如下所示 -
Use Volley library for getting JSON response from url as below -
首先在项目中添加库模块:app依赖项如下 -
First add library in your project Module:app dependency as below -
dependencies {
compile 'com.mcxiaoke.volley:library-aar:1.0.1'
...
}
使用以下代码从Volley Library获取响应 -
Use below code to get response from Volley Library -
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url = "WEBSERVICE_URL"; // eg:- "http://www.google.com";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println("Response is: " + response);
try {
JSONObject jobj = new JSONObject(response);
JSONObject jEmp = jobj.getJSONObject("employee");
String message = jEmp.getString("mesg");
int Status = jEmp.getInt("status");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error.networkResponse != null && error.networkResponse.data != null){
VolleyError verror = new VolleyError(new String(error.networkResponse.data));
System.out.println("That didn't work!\n" + error.toString());
}
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
您可以解析JSON,如下所示 -
You can parse the JSON as below -
try {
JSONObject jobj = new JSONObject(responseJSONString);
JSONObject jEmp = jobj.getJSONObject("employee");
String message = jEmp.getString("mesg");
int Status = jEmp.getInt("status");
} catch (JSONException e) {
e.printStackTrace();
}
`responseJSONString` is the JSON response you got.
这篇关于在android中解析简单的json字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!