【问题标题】:Jackson deserializing JSON into multiple POJOsJackson 将 JSON 反序列化为多个 POJO
【发布时间】:2012-08-21 12:35:26
【问题描述】:

您好,我有以下 JSON

{
 "code": 0,
 "response": {
  "userObject": {
   "User": {
    "id": "355660",
    "first_name": "Dummy",
    "last_name": "dummy",
    "email": "dumb@email.com",
    "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"
   }
  }
 }
}

我有两节课, Location User 各一节

我知道如果我创建像这样的嵌套类,我可以获得对象

    response
     ->UserObject
         *User
         *Location

但我不想为 UserObject response 创建两个额外的类,只是为了包装两个 POJO。 有没有更简单的方法??

我正在使用 Jackson Parser Spring for android

【问题讨论】:

    标签: android json spring jackson


    【解决方案1】:

    如果你真的想避免一次性的课程,你也可以分两步完成,比如:

    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);
    

    但是是的,我可能会选择愚蠢的结构类:

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

    因为它真的没有更多的代码。

    【讨论】:

      【解决方案2】:

      您可以创建arrays 或使用hashmap,而不是创建classes。就个人而言,我只会创建classes。我认为这为您的应用程序提供了更大的灵活性,并使您可以更轻松地处理对象。我知道设置它们需要时间,但是一旦你这样做了,你就可以使用ArrayList 并且你可以更容易地解析JSON

      【讨论】:

      • 是的,创建类会简化一些事情。但我想知道是否可以用Jackson Tree ModelJackson Data Bind 以不太复杂的方式完成。
      • 说实话,我对这两个都不熟悉。当我解析JSONObjects 时,我只是将它们放入类中。我想这一切都取决于你将如何处理数据。如果您计划将数据从Activity 传递到Activity,您可能需要使用这些类。另外,请记住,任何树模型都只是数据相关的一种方式。
      猜你喜欢
      • 2012-04-07
      • 2020-12-10
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2017-08-09
      • 2014-10-22
      • 1970-01-01
      相关资源
      最近更新 更多