首页 > 解决方案 > 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。

标签: javajsonspringrest

解决方案


推荐阅读