在android中解析简单的json字符串

在android中解析简单的json字符串

本文介绍了在android中解析简单的json字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用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字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 23:09