-5

I am unable to resolve the issue.. please help:

Erorr:

java.lang.ClassCastException: class org.json.simple.JSONArray cannot be cast to class org.json.simple.JSONObject (org.json.simple.JSONArray and org.json.simple.JSONObject are in module [email protected] of loader 'app')
    at lamda_pi/lamda_pi.letsRead.main(letsRead.java:77)

Sample json looks like below:

[
{
"name": "Afghanistan",
"dial_code": "+93",
"code": "AF"
},
{
"name": "Aland Islands",
"dial_code": "+358",
"code": "AX"
}]
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;


 class letsRead 
 {
    public static void main(String [] args)
    {
        String inline = "";
    
        try
        {
            URL url = new URL("https://gist.githubusercontent.com/anubhavshrimal/75f6183458db8c453306f93521e93d37/raw/f77e7598a8503f1f70528ae1cbf9f66755698a16/CountryCodes.json");
                    
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    
            conn.setRequestMethod("GET");
            
            conn.connect();
            
            int responsecode = conn.getResponseCode();
            System.out.println("Response code is: " +responsecode);
            
            if(responsecode != 200)
                throw new RuntimeException("HttpResponseCode: " +responsecode);
            else
            {
                Scanner sc = new Scanner(url.openStream());
                while(sc.hasNext())
                {
                    inline=inline + sc.nextLine();
                }
                System.out.println("\nJSON Response in String format"); 
                System.out.println(inline);
                sc.close();
            }
           
            JSONParser parse = new JSONParser();
            
            JSONObject jobj = (JSONObject)parse.parse(inline);
            
            JSONArray jsonarr_1 = (JSONArray) jobj.get("name");
        
            for(int i=0;i<jsonarr_1.size();i++)
            {
                
                JSONObject jsonobj_1 = (JSONObject)jsonarr_1.get(i);
                System.out.println(jsonobj_1.get("name"));
                
                
            }
                    conn.disconnect();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 }
3

1 Answer 1

0

The top level object in your JSON file is an array so:

class letsRead 
 {
    public static void main(String [] args)
    {
        String inline = "";
    
        try
        {
            URL url = new URL("https://gist.githubusercontent.com/anubhavshrimal/75f6183458db8c453306f93521e93d37/raw/f77e7598a8503f1f70528ae1cbf9f66755698a16/CountryCodes.json");
                    
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    
            conn.setRequestMethod("GET");
            
            conn.connect();
            
            int responsecode = conn.getResponseCode();
            System.out.println("Response code is: " +responsecode);
            
            if(responsecode != 200)
                throw new RuntimeException("HttpResponseCode: " +responsecode);
            else
            {
                Scanner sc = new Scanner(url.openStream());
                while(sc.hasNext())
                {
                    inline=inline + sc.nextLine();
                }
                System.out.println("\nJSON Response in String format"); 
                System.out.println(inline);
                sc.close();
            }
           
            JSONParser parse = new JSONParser();
                       
            JSONArray jsonarr_1 = (JSONArray)parse.parse(inline);
        
            for(int i=0;i<jsonarr_1.size();i++)
            {
                
                JSONObject jsonobj_1 = (JSONObject)jsonarr_1.get(i);
                System.out.println(jsonobj_1.get("name"));
                
                
            }
                    conn.disconnect();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
 }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.