java - HTTP 请求 GET 方法。如何在 Java 中的 Spring RestTemplate(getForEntity) + JSON 上解决这个问题?
问题描述
我想通过一个库来检索信息,该库以 JSON 格式攻击我的用户的 Codewars API。请求方法(GET,返回一个包含有关用户信息的 JSON)https://www.codewars.com/api/v1/ users/(在这里你输入你的用户名)。首先我在这个 URI 的末尾添加了我的名字,以检查它是否正常工作并返回一个 JSON。之后,我使用了一个转换器(JSON 到 Java)来取回我的 JSON 对应的 Java 代码。 http://www.jsonschema2pojo.org/
我的 JSON:
{
username: "heremyusername",
name: null,
honor: 2,
clan: "pepito",
leaderboardPosition: 500793,
skills: null,
ranks: {
overall: {
rank: -8,
name: "8 kyu",
color: "white",
score: 2
},
languages: {
java: {
rank: -8,
name: "8 kyu",
color: "white",
score: 2
}
}
},
codeChallenges: {
totalAuthored: 0,
totalCompleted: 1
}
}
我的方法:
public User getUser() {
RestTemplate restTemplate = new RestTemplate();
User user = restTemplate.getForEntity("https://www.codewars.com/api/v1/users/(here my user name)", User.class).getBody();
return ;
}
问题是 JSON to Java 给了我 6 个不同的 Java 类。其中之一:
package entities;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"overall",
"languages"
})
public class Ranks {
@JsonProperty("overall")
private Overall overall;
@JsonProperty("languages")
private Languages languages;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String,
Object>();
@JsonProperty("overall")
public Overall getOverall() {
return overall;
}
@JsonProperty("overall")
public void setOverall(Overall overall) {
this.overall = overall;
}
@JsonProperty("languages")
public Languages getLanguages() {
return languages;
}
@JsonProperty("languages")
public void setLanguages(Languages languages) {
this.languages = languages;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
它给了我另外 5 个具有相同格式的 Java 类(Java、Overall、Mail、Languages、CodeChallenge)(getters、setters...)所以方法 public User getUser() 是错误的,我不知道它返回什么,如果我必须使它无效或使用什么类,因为我想检索所有信息而不仅仅是一部分。
User 是一个 JavaBean,其字段是 Integer id 和 String username。
解决方案
推荐阅读
- c# - 如何使用 iText7 覆盖 PDF 中现有的书签树
- nginx - 让我们加密认证不适用于 ubuntu 上的 nginx
- sql-server - 授予查看任何公共定义 - 不影响
- node.js - 套接字 io 不会向房间内的所有用户发出事件
- javascript - Lightbox Slideshow issue
- visual-studio-code - 在 ssh 模式下运行时在 vscode 中打开本地终端
- javascript - 如何 console.log 一个有 ID 的。获取 ReferenceError:文档未定义
- python - Python pandas 夹板字符串,添加行,每列不同
- php - 动态更改标题、描述
- swift - 在 Xcode 中检测任何触摸(不是 TapGesture)