vKashyap
vKashyap

Reputation: 580

Jackson deserializing JSON into multiple POJOs

Hi I have following JSON

{
 "code": 0,
 "response": {
  "userObject": {
   "User": {
    "id": "355660",
    "first_name": "Dummy",
    "last_name": "dummy",
    "email": "[email protected]",
    "birthday": "2012-05-07",
    "created": "2012-08-21 06:41:05",
    "modified": "2012-08-21 06:41:05",
    "image_url": null,
   },
   "Location": {
    "id": "273550",
    "name": "New York City",
    "asciiName": "New York City",
    "lat": "40.714272",
    "lon": "-74.005966",
    "geoname_modified": "2011-11-08 00:00:00",
    "timeZone": "America/New_York",
    "countryName": "United States",
    "state": "New York",
    "created": "2012-07-12 12:11:01",
    "modified": "2012-08-20 14:27:24"
   }
  }
 }
}

I have two classes, one each for Location and User

I know that I can get the objects if I create nested class like

    response
     ->UserObject
         *User
         *Location

But i don't want to create two extra classes for UserObject and response just for wrapping the two POJO's . Is there any simpler way to do it??

I am using Jackson Parser with Spring for android

Upvotes: 0

Views: 1621

Answers (2)

StaxMan
StaxMan

Reputation: 116522

You can also do it in two steps, if you really want to avoid throw-away classes, like:

JsonNode tree = mapper.readTree(...);
User user = mapper.treeToValue(tree.path("response").path("userObject").get("User"), User.class);
Location loc = mapper.convertValue(tree.path("response").path("userObject").get("Location"), Location.class);

but yeah I might go with silly struct-classes instead:

static class Response {
  public UserObject userObject;
}
static class UserObject {
  public Location Location;
  public User User;
}

since it really isn't much more code.

Upvotes: 4

BlackHatSamurai
BlackHatSamurai

Reputation: 23493

Rather than creating classes you could create arrays or use hashmap. Personally, I would just create the classes. I think that this give you more flexibility in your app, and will allow you to work with the objects with less hassle. I know it takes time to set them up, but once you do that, you can use ArrayList and you can parse the JSON quite a bit easier.

Upvotes: 2

Related Questions