Java 使用任何jackson库解析json的最佳方法

Java 使用任何jackson库解析json的最佳方法,java,jackson,Java,Jackson,对于一个正在进行的开发,外部rest服务返回如下响应: { "type": "State", "id": "12344", "prodId": "wert", "players": 14, "feeds": { "abc123": { ----- }, "def1234": { ----- }, --- ---

对于一个正在进行的开发,外部rest服务返回如下响应:

{
    "type": "State",
    "id": "12344",
    "prodId": "wert",
    "players": 14,
    "feeds": {
        "abc123": {
            -----
        },
        "def1234": {
            -----
        },

        ---
        ---

        "someRandomAlphanumericValue": {

        }
    }
}

这里的要求是,我想解析这个JSON,并以java对象的格式输出,以便于访问。

具有随机字母数字属性,如
Map

Jackson将通过构建HashMap来绑定它们,并将这些属性添加到HashMap中,属性名称作为键,属性值作为值

下面是一个完整的示例:

给定当前包中另存为“feeds.JSON”的有效JSON文件:

{
  "id": "12344",
  "players": 14,
  "feeds": {
    "abc123": {
      "id": "1",
      "number": 1
    },
    "def1234": {
      "id": "2",
      "number": 2
    },
    "someRandomAlphanumericValue": {
      "id": "3",
      "number": 3
    }
  }
}
我们定义这些类将其绑定到:

public class FeedContainer {
  private String id;
  private int players;
  private Map<String, Feed> feeds;

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public int getPlayers() {
    return players;
  }

  public void setPlayers(int players) {
    this.players = players;
  }

  public Map<String, Feed> getFeeds() {
    return feeds;
  }

  public void setFeeds(Map<String, Feed> feeds) {
    this.feeds = feeds;
  }
}
现在我们可以用这个类来测试它们:

public class FeedContainerTry {

  public static void main(String[]args) throws IOException {
    ObjectMapper mapper = new ObjectMapper();

    try(InputStream is = FeedContainerTry.class.getResourceAsStream("feeds.json")) {
      FeedContainer container = mapper.readValue(is, FeedContainer.class);
      container.getFeeds().forEach((key, feed) -> {
        System.out.println(key + ": " + feed.getId() + ", " + feed.getNumber());
      });
    }
  }
}

这表明我们可以访问所有属性

您将需要创建类似于响应的模型类,并且您可以使用更快的jackson api将其解析为java模型created@Ishant,感谢您的评论,因为您可以看到该键始终是随机值;这就是问题所在;因此,将该随机值映射到json元素并不需要您的帮助;你能帮我查一下示例代码吗snippet@Creator我很感激你的尝试,但我编辑了我的答案,给出了一个完整的例子。谢谢你的努力。
public class FeedContainerTry {

  public static void main(String[]args) throws IOException {
    ObjectMapper mapper = new ObjectMapper();

    try(InputStream is = FeedContainerTry.class.getResourceAsStream("feeds.json")) {
      FeedContainer container = mapper.readValue(is, FeedContainer.class);
      container.getFeeds().forEach((key, feed) -> {
        System.out.println(key + ": " + feed.getId() + ", " + feed.getNumber());
      });
    }
  }
}