You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Volley访问JSON对象?API响应赋值UUID到TextView无效求代码

问题:Volley解析JSON设置UUID到TextView无效果,求完整可行代码

嘿,我来帮你搞定这个问题!首先我注意到你提供的API响应JSON有个语法错误——data字段后面缺少了冒号,这会直接导致JSON解析失败,正确的响应格式应该是这样的:

{ 
  "success":true, 
  "data": { 
    "serial_key_id":"75", 
    "order_id":"0", 
    "product_id":"0", 
    "serial_key":"WURYFO", 
    "valid_till":null, 
    "limit":"0", 
    "uuid":"", 
    "used":false 
  } 
}

你的部分代码没写完,我给你一套完整的可行代码,包含所有必要步骤,确保能正确请求API、解析JSON并把uuid设置到TextView中:

第一步:添加Volley依赖

先确保你已经在Module级别的build.gradle文件中添加了Volley的依赖:

dependencies {
    // 其他已有的依赖...
    implementation 'com.android.volley:volley:1.2.1'
}

第二步:完整的Activity代码

import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    private TextView uuidTextView;
    private RequestQueue requestQueue;

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

        // 初始化要显示UUID的TextView(确保布局里有这个id)
        uuidTextView = findViewById(R.id.uuid_text_view);
        // 初始化Volley的请求队列
        requestQueue = Volley.newRequestQueue(this);

        // 调用API获取UUID
        fetchUuidFromApi();
    }

    private void fetchUuidFromApi() {
        String apiUrl = "http://mylocalpay.com/?serial_key_api=1&coupon=WURYFO";

        // 创建JsonObjectRequest请求
        JsonObjectRequest jsonRequest = new JsonObjectRequest(
                Request.Method.GET,
                apiUrl,
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            // 先判断请求是否成功
                            boolean isSuccess = response.getBoolean("success");
                            if (isSuccess) {
                                // 取出嵌套的data对象
                                JSONObject dataObject = response.getJSONObject("data");
                                // 获取uuid字段值
                                String uuidValue = dataObject.getString("uuid");
                                // 设置到TextView中
                                uuidTextView.setText(uuidValue);

                                // 注意:你提供的API响应里uuid是空字符串,这里加个提示
                                if (uuidValue.isEmpty()) {
                                    Toast.makeText(MainActivity.this, "API返回的UUID为空", Toast.LENGTH_SHORT).show();
                                }
                            } else {
                                Toast.makeText(MainActivity.this, "API请求失败", Toast.LENGTH_SHORT).show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                            Toast.makeText(MainActivity.this, "JSON解析出错:" + e.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                        Toast.makeText(MainActivity.this, "网络请求出错:" + error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }
        );

        // 将请求添加到队列中执行
        requestQueue.add(jsonRequest);
    }

    @Override
    protected void onStop() {
        super.onStop();
        // 页面停止时取消所有请求,避免内存泄漏
        if (requestQueue != null) {
            requestQueue.cancelAll(this);
        }
    }
}

额外注意事项

  • 确保你的布局文件(比如activity_main.xml)里有一个id为uuid_text_view的TextView:
    <TextView
        android:id="@+id/uuid_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"/>
    
  • 别忘了在AndroidManifest.xml中添加网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 你提供的API响应里uuid字段是空字符串,所以设置后TextView会显示为空,这时候代码里的Toast会提示你这个情况,可能需要确认API的业务逻辑是否正确返回UUID。

内容的提问来源于stack exchange,提问作者Harshvardhan Singh Gaharwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:58:56