简体   繁体   中英

How to parse a single json object value to a button

I want to parse a single url from my remote json file. I have a Button code in onCreate and I want to parse url from my json object to my 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. I am getting Error "Can not resolve symbol '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

{
"MyDynamicUrl": [   

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

]}

You should define myDynamicLink as a field outside of the method and then set a value to it:

 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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