有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将单个json对象值解析为按钮

我想从我的远程json文件中解析一个url。我在onCreate中有一个按钮代码,我想解析从json对象到DynamicButton的url

    private void parseJSON() {

    String url = https://www.example.com/data.json
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    try {
    JSONArray jsonArray = response.getJSONArray("MyDynamicUrl");

    for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject hit = jsonArray.getJSONObject(i);

    String myDynamicLink = hit.getString("Link");
    }

    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    error.printStackTrace();
    }
    });
    mRequestQueue.add(request);

    }

我在onCreate中有这个按钮,现在我想将myDynamicLink解析为这个按钮。我收到错误“无法解析符号'MyDynamicLink'”

    DLbtn = findViewById(R.id.DynamicLinkButton);
    DLbtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    String url = myDynamicLink;
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
    }
    });

我的json文件结构

{
"MyDynamicUrl": [   

{"Link":"https://www.myDynamicUrl.com"}

]}

共 (1) 个答案

  1. # 1 楼答案

    您应该将myDynamicLink定义为方法之外的字段,然后为其设置一个值:

     private String myDynamicLink;
    
     private void parseJSON() {
        ...
        myDynamicLink = hit.getString("Link");
        ...
     }
    

    还要注意,请求是异步发出的(在另一个线程上), 这意味着您的按钮可能已经初始化,您可以单击它,但可能仍然没有收到响应

    此外,您可以开始使用一个库来将JSON对象转换为Java对象,例如Gson,它将让您更容易地解析JSON