user3191617
user3191617

Reputation: 51

Parse Json with com.fasterxml.jackson instead of org.json

I was wondering if it is possible to do this exact operation but with the jackson library.

String repo = response.toString();
JSONObject json = new JSONObject (repo);
String nameOfUser = json.getJSONObject(facebookID).getString("name");

Thank you,

Upvotes: 1

Views: 1112

Answers (1)

StaxMan
StaxMan

Reputation: 116512

Yes. Something like:

ObjectMapper mapper = new ObjectMapper(); // reuse, usually static final
JsonNode ob = mapper.readTree(response.toString()); // or from File, URL, InputStream, Reader
String nameOfUser = ob.path(facebookID).path("name").asText();
// note: '.get()' also works, but returns nulls, 'path()' safer

although even more convenient access is often done using JSON Pointer expressions, like:

String name = ob.at("/person/id").asText();    

but I assume facebookID is an id from some other source.

UPDATE: as per comment below, structure you want may actually be POJO like:

public class Response {
  public User facebookID;
}
public class User {
   public String id;
   public String email;
   public String first_name;
   // ... and so forth: fields and/or getter+setter
}

and then you can bind directly into class like so:

Response resp = mapper.readValue(response.toString(), Response.class);
String name = resp.facebookID.name;

So there's more than one way to do it with Jackson.

Upvotes: 1

Related Questions