Parsing a JSON from HTTP Response in Java

28,076

Solution 1

Better and easier to use Gson

Gson gson = new Gson;
NameBean name = gson.fromJson(content.toString(),NameBean.class)

NameBean is the object where you persist the json string.

public class NameBean implements Serializable{
public String name;
public String lastname;
public Int age;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public Int getAge() {
    return age;
}

public void setAge(Int age) {
    this.age = age;
}

}

Solution 2

instead of

Object obj=JSONValue.parse(content.toString());
JSONObject finalResult=(JSONObject)obj;
System.out.println(finalResult);

try this:

JSONObject jsonObject = new JSONObject(content.toString());
System.out.println(jsonObject.getString("Name") + " " jsonObject.getString("Lastname") + " " + jsonObject.getInt("Age"));
Share:
28,076
jojemapa
Author by

jojemapa

Updated on September 22, 2020

Comments

  • jojemapa
    jojemapa over 3 years

    Hi I am using Client Http (apache), and json-simple.

    I want to access the attributes of the json response, and then use them.

    Any idea how to do this? I read a post and did not work as it but me.

    This is my answer json:

    {"Name":"myname","Lastname":"mylastname","Age":19}
    

    This is my code java:

    DefaultHttpClient httpClient = new DefaultHttpClient();
    
    HttpGet getRequest = new HttpGet(
        "http://localhost:8000/responsejava");
    getRequest.addHeader("accept", "application/json");
    
    HttpResponse response = httpClient.execute(getRequest);
    
    if (response.getStatusLine().getStatusCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                 + response.getStatusLine().getStatusCode());
    }
    
    BufferedReader br = new BufferedReader(
        new InputStreamReader( 
            (response.getEntity().getContent())
        )
    );
    
    StringBuilder content = new StringBuilder();
    String line;
    while (null != (line = br.readLine())) {
        content.append(line);
    }
    
    Object obj=JSONValue.parse(content.toString());
    JSONObject finalResult=(JSONObject)obj;
    System.out.println(finalResult);
    
    httpClient.getConnectionManager().shutdown();
    

    I printed null, What am I doing wrong?

  • jojemapa
    jojemapa over 8 years
    How I define Name Bean? ;(
  • jojemapa
    jojemapa over 8 years
    JSONObject does not accept the string argument. The method getString not exist. Thanks for your time ;(
  • armysheng
    armysheng over 8 years
    NameBean should define with fields and getter setter matches with the json String. Check the Gson user guide for more, it's easy and won't take long minutes
  • David Sousa
    David Sousa over 8 years
    I think you are using a native library, because i used an external json jar and worked fine, I hope you can solve your problem ^^
  • jojemapa
    jojemapa over 8 years
    Thank you. Apparently you use json javax . It is not the same as Gson , or single - json . And can resolve my problem. Thank you.
  • Roman Vottner
    Roman Vottner over 8 years
    @VipPunkJoshersDroopy org.json.JSONObject does have a getString(String) method. Though, always make sure to check with has(String) beforehand if the JSON actually contained this field on the respective object