简体   繁体   English

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

[英]How to parse a single json object value to a button

I want to parse a single url from my remote json file. 我想从我的远程json文件中解析一个URL。 I have a Button code in onCreate and I want to parse url from my json object to my DynamicButton. 我在onCreate中有一个Button代码,我想将json对象中的url解析为我的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);

    }

I have this button in onCreate and Now I want to parse myDynamicLink to this button. 我在onCreate中有此按钮,现在我想将myDynamicLink解析为该按钮。 I am getting Error "Can not resolve symbol '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);
    }
    });

My json file structure 我的json文件结构

{
"MyDynamicUrl": [   

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

]}

You should define myDynamicLink as a field outside of the method and then set a value to it: 您应该将myDynamicLink定义为方法之外的字段,然后为其设置一个值:

 private String myDynamicLink;

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

Also note, that the request is made asynchronously (on another thread), it means that your button may be already initialized and you can click it, but possibly you may still not receive a response. 还要注意,该请求是异步发出的(在另一个线程上),这意味着您的按钮可能已被初始化,您可以单击它,但可能仍未收到响应。

In addition, you may start using a library for converting JSON objects to Java objects, such as Gson , it will let you much easily parse the JSON. 另外,您可能开始使用将JSON对象转换为Java对象的库,例如Gson ,它将使您更轻松地解析JSON。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM