【问题标题】:How to parse a single json object value to a button如何将单个 json 对象值解析为按钮
【发布时间】:2019-05-21 05:12:19
【问题描述】:

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

    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"}

]}

【问题讨论】:

  • 您的变量 myDynamicLink 仅存在于您的 parseJason 方法中的 for 循环中。此外,该方法不会返回任何内容。这意味着它不存在于 for 循环之外,更不用说方法之外了。
  • 那怎么解决这个问题呢?

标签: java android arrays json


【解决方案1】:

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

 private String myDynamicLink;

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

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

另外,您可以开始使用一个库来将 JSON 对象转换为 Java 对象,例如 Gson,它会让您轻松解析 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多