Android中使用Volley发送JSON对象:EditText取值构建JSONObject问题
解决Android Volley中构建JSONObject的问题
嗨,我来帮你搞定这个JSON对象构建的问题!你现在已经成功从EditText拿到了SN和Name的值,接下来只需要用JSONObject的put()方法来安全地添加键值对,而不是手动拼接JSON字符串(手动拼接很容易因为特殊字符或者语法错误导致JSON无效)。
正确的代码实现步骤:
- 确保输入值有效:先给获取到的字符串做个空值判断,避免传递空数据到接口
- 用API构建JSON对象:创建空的
JSONObject后,调用put()方法逐个添加键值对,自动处理转义问题 - 结合Volley发送请求:把构建好的JSON对象直接传入
JsonObjectRequest的请求体
这里是修改后的完整代码示例:
btn_enter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 获取输入值并去除首尾空格 SN1 = inputsn.getText().toString().trim(); Name1 = inputname.getText().toString().trim(); // 空值校验,避免无效请求 if (SN1.isEmpty() || Name1.isEmpty()) { Toast.makeText(Add.this, "请填写完整的SN和名称", Toast.LENGTH_SHORT).show(); return; } // 构建JSONObject JSONObject jsonMenu = new JSONObject(); try { // 按接口要求的键名添加键值对,这里的"sn"和"name"可根据实际接口调整 jsonMenu.put("sn", SN1); jsonMenu.put("name", Name1); Toast.makeText(Add.this, "JSON对象已创建", Toast.LENGTH_SHORT).show(); // 初始化Volley的JsonObjectRequest JsonObjectRequest volleyRequest = new JsonObjectRequest( Request.Method.POST, "你的接口请求URL", jsonMenu, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // 请求成功后的处理逻辑,比如解析返回数据 } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // 请求失败后的处理逻辑,比如提示错误 } } ); // 将请求加入Volley请求队列 Volley.newRequestQueue(Add.this).add(volleyRequest); } catch (JSONException e) { e.printStackTrace(); Toast.makeText(Add.this, "JSON对象构建失败", Toast.LENGTH_SHORT).show(); } } });
为什么不推荐手动拼接JSON字符串?
- 如果输入内容包含双引号、斜杠等特殊字符,手动拼接会直接破坏JSON格式,而
put()方法会自动处理字符转义 - 手动拼接容易出现语法错误(比如漏写逗号、引号不配对),排查起来非常麻烦,官方API构建的方式更可靠
内容的提问来源于stack exchange,提问作者R.Maharjan
相关产品推荐
相关产品推荐

