Java Android Post JSON数据

Java Android Post JSON数据,java,android,json,Java,Android,Json,大家好,我正在尝试从EditText获取数据并将其作为JSON对象发布,但它返回的是空对象,没有数据 对象仅返回键,未映射到屏幕中显示的EditText中输入的值 注意:我只需要在Toast中检索JSON对象 public class MainActivity extends AppCompatActivity { EditText userName; EditText password; EditText email; EditText phone;

大家好,我正在尝试从EditText获取数据并将其作为JSON对象发布,但它返回的是空对象,没有数据 对象仅返回键,未映射到屏幕中显示的EditText中输入的值 注意:我只需要在Toast中检索JSON对象

public class MainActivity extends AppCompatActivity {

    EditText userName;
    EditText password;
    EditText email;
    EditText phone;
    Button submit;

    Person person;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        person = new Person();

        userName = (EditText) findViewById(R.id.user_name);
        password = (EditText) findViewById(R.id.password);
        email = (EditText) findViewById(R.id.email);
        phone = (EditText) findViewById(R.id.phone);
        submit = (Button) findViewById(R.id.submit);

        person.setUserName(userName.getText().toString());

        person.setPassword(password.getText().toString());

        person.setEmail(email.getText().toString());

        person.setPhone(phone.getText().toString());
        submit.setOnClickListener(new View.OnClickListener() {@Override
            public void onClick(View v) {
                new JsonDataConverter().execute(person);
            }
        });
    }
    private class JsonDataConverter extends AsyncTask < Person,
    Void,
    String > {

        @Override
        protected String doInBackground(Person...params) {

            try {
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("userName", person.getUserName());
                jsonObject.put("password", person.getPassword());
                jsonObject.put("email", person.getEmail());
                jsonObject.put("phone", person.getPhone());
                return jsonObject.toString();
            } catch(JSONException ex) {
                ex.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            try {
                JSONObject jsonUser = new JSONObject(s);
                jsonUser.get("userName");
                jsonUser.get("password");
                jsonUser.get("email");
                jsonUser.get("phone");

                Toast.makeText(MainActivity.this, jsonUser.toString(), Toast.LENGTH_SHORT).show();

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

        }
    }
}

您刚才在错误的位置使用了设置器。在ClickListener中使用它,如下所示

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


person = new Person();

userName = (EditText) findViewById(R.id.user_name);
password = (EditText) findViewById(R.id.password);
email = (EditText) findViewById(R.id.email);
phone = (EditText) findViewById(R.id.phone);
submit = (Button) findViewById(R.id.submit);

submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       person.setUserName(userName.getText().toString());

       person.setPassword(password.getText().toString());

       person.setEmail(email.getText().toString());

       person.setPhone(phone.getText().toString());

        new JsonDataConverter().execute(person);
    }
 });
}
编辑:
您使用的是高级成员person而不是param[0]

没有post代码,您只是创建了一个json,在
doInBackground
onPostExecute
中添加值只需从同一个json中获取值,而不将其保存在任何地方Pavneet Singh-我只需要JsonObject与数据一起显示在Toast中,直到知道为止,但它不需要,您可以使用person,但您应该将person从类级别删除,并使用param访问它。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


person = new Person();

userName = (EditText) findViewById(R.id.user_name);
password = (EditText) findViewById(R.id.password);
email = (EditText) findViewById(R.id.email);
phone = (EditText) findViewById(R.id.phone);
submit = (Button) findViewById(R.id.submit);

submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       person.setUserName(userName.getText().toString());

       person.setPassword(password.getText().toString());

       person.setEmail(email.getText().toString());

       person.setPhone(phone.getText().toString());

        new JsonDataConverter().execute(person);
    }
 });
}