【问题标题】:Java JSON to objectJava JSON 到对象
【发布时间】:2018-01-08 10:25:13
【问题描述】:

我正在使用 Java 从 REST 服务中检索一些 JSON。我喜欢的是将 JSON“节点”映射到 Java 对象。

JSON 是这样的:

{  
   "token":{  
      "tokenType":"Bearer",
      "accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTU0MDY0MjgsImlhdCI6MTUxNTQwNTUyOCwic3ViIjoiNWE1MzQwZDg4NmUxYTc2ZGU2MTY2NTQ2In0.7YjmghgAQLtyNaPuWDp9StQBJv79JQZD3G_XbKvYOaQ",
      "refreshToken":"5a5340d886e1a76de6166546.35e821dd2042efad2add8da80d6c765bded3ca37078415a4ebe46f9ba8da312a6d16cc05e91431bc",
      "expiresIn":"2018-01-08T10:13:48.261Z"
   },
   "user":{  
      "id":"5a5340d886e1a76de6166546",
      "email":"testingsest@gmail.com",
      "role":"user",
      "createdAt":"2018-01-08T09:58:48.153Z"
   }
}

Token.java 是这样的:

public class Token {

    String tokenType;
    String accessToken;
    String refreshToken;
    long expiresIn;

    public String getTokenType() {
        return tokenType;
    }

    public void setTokenType(String tokenType) {
        this.tokenType = tokenType;
    }

    public String getAccessToken() {
        return accessToken;
    }

    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

    public String getRefreshToken() {
        return refreshToken;
    }

    public void setRefreshToken(String refreshToken) {
        this.refreshToken = refreshToken;
    }

    public long getExpiresIn() {
        return expiresIn;
    }

    public void setExpiresIn(long expiresIn) {
        this.expiresIn = expiresIn;
    }


}

如何使用 Jackson 库(使用 ObjectMapper)将“令牌”映射到 Object?

(我知道如何在 Token 类中手动解析 JSON 并手动填充 setters 方法)

【问题讨论】:

标签: java json


【解决方案1】:

你可以这样做:

首先,创建一个User 类:

public class User {

    private String id;

    private String email;

    private String role;

    private String createdAt;

    //constructors and getters/setters
}

并创建你的包装类(这里我将它命名为Session):

public class Session {

    private Token token;

    private User user;

    //constructors and getters/setters
}

然后,您可以将收到的对象取消编组,将 Jackson 作为 Session 的实例。

---- 编辑:

如果您不想在Session 中映射User,只需在Session 类上添加以下注释:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Session {

    private Token token;

    //constructors and getters/setters
}

【讨论】:

  • 谢谢! ObjectMapper 映射器 = 新 ObjectMapper();会话会话 = mapper.readValue(response, Session.class);
  • 欢迎您。如果您不想映射 user,我在我的回答中添加了评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多