androidjsonandroid-volleylast.fmjsonexception

JSONException while using last.fm API in android


JSON :

{"results":{"opensearch:Query":{"#text":"","role":"request","searchTerms":"Rose","startPage":"1"},"opensearch:totalResults":"102325","opensearch:startIndex":"0","opensearch:itemsPerPage":"1","artistmatches":{"artist":[{"name":"Guns N' Roses","listeners":"3198315","mbid":"eeb1195b-f213-4ce1-b28c-8565211f8e43","url":"https://www.last.fm/music/Guns+N%27+Roses","streamable":"0","image":[{"#text":"https://lastfm-img2.akamaized.net/i/u/34s/7d102ebcf4184bb1ae2b851efcbceb30.png","size":"small"},{"#text":"https://lastfm-img2.akamaized.net/i/u/64s/7d102ebcf4184bb1ae2b851efcbceb30.png","size":"medium"},{"#text":"https://lastfm-img2.akamaized.net/i/u/174s/7d102ebcf4184bb1ae2b851efcbceb30.png","size":"large"},{"#text":"https://lastfm-img2.akamaized.net/i/u/300x300/7d102ebcf4184bb1ae2b851efcbceb30.png","size":"extralarge"},{"#text":"https://lastfm-img2.akamaized.net/i/u/300x300/7d102ebcf4184bb1ae2b851efcbceb30.png","size":"mega"}]}]},"@attr":{"for":"Rose"}}}

I am unable to fetch the artist details using this JSON. I would like to know the format to use this JSON in Volley android.

Code:

final JsonArrayRequest jsonArrayRequest = new 

JsonArrayRequest(Request.Method.GET,url,null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {

            for (int i = 0; i < response.length(); i++) {
                try {

                   JSONObject object = response.getJSONObject(i);

                        JSONObject obj1   = object.getJSONObject("results");
                        JSONObject obj2   = obj1.getJSONObject("artistmatches");
                        JSONArray m_jArry = obj2.getJSONArray("artist");


                        for (i = 0; i < m_jArry.length(); i++)
                        {
                            JSONObject obj4 = m_jArry.getJSONObject(i);
                            String name=obj4.getString("name");
                            String mbid=obj4.getString("mbid");
                            String url=obj4.getString("url");



                        }

Solution

  • Try this....i have edited your jsonResponse

        JSONObject jsonObject = new JSONObject(response);
    JSONObject results = jsonObject.getJSONObject("results");
    JSONObject opensearch = results.getJSONObject("opensearch:Query");
    String text = opensearch.getString("#text");//after this get your all string of "opensearch:Query" object same way
    
    
    
    String totalResults=results.getString("opensearch:totalResults");////after this get your all other string like "opensearch:startIndex" and "opensearch:itemsPerPage" of "results" object same way 
    
    JSONObject artistmatches = results.getJSONObject("artistmatches");
    JSONArray artist = artistmatches.getJSONArray("artist");
    JSONArray image = artist.getJSONArray("image");
    for (int i = 0; i < artist.length(); i++) {
    JSONObject allartist = artist.getJSONObject(i);
    
    String name=artist.getString("name"); // same you can get all strings like "listeners","mbid".. of artist array
    
    //by this you will get images array
    
    for (int j = 0; j < image.length(); j++) {
    JSONObject allimage = image.getJSONObject(i);
    
    String imageText=allimage.getString("#text");
    String size=allimage.getString("size");
    
    
    
    }