从本地主机导入列表时,人们如何修复反序列化错误?
How do people fix a deserialization error when importing a list from the localhost?
我正在尝试将我的 json 列表放入我的代码中,但我一直收到此错误。
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:840)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1206)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1592)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1570)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3205)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3188)
at dev.lightt.Application.main(Application.java:34)
我的密码是
public static final String POSTS_API_URL = "http://localhost:3000/Leaders";
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.GET()
.header("accept", "application/json")
.uri(URI.create(POSTS_API_URL))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// parse JSON
ObjectMapper mapper = new ObjectMapper();
List<Post> posts = mapper.readValue(response.body(), new TypeReference<>() {
});
posts.forEach(System.out::println)
我正在查看 restful API 教程,但它没有提到这一点。
我的Json有点像
{
"UserId":1,
"Id":1,
"Title":"Life",
"Body":"Man suffers only because he takes seriously what the gods made for fun."
},
{
"UserId":1,
"Id":2,
"Title":"Nature",
"Body":"Without birth and death, and without the perpetual transmutation of all the forms of life, the world would be static, rhythm-less, undancing, mummified."
},
这是 Post Class 代码。它是说 getter 和 setter 没有被使用。唯一没有说明的是 getUserId()、getTitle() 和 getId()。
public class Post {
private int id;
private String title;
private String body;
private int userId;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
@Override
public String toString() {
return "Post{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
'}';
}
}
}
映射区分大小写,因此您可以:
- 将您的 json 更改为
{
"userId":1,
"id":1,
"title":"Life",
"body":"Man suffers only because he takes seriously what the gods made for fun."
}
- 映射 POJO 中的属性
@JsonProperty("Id")
private int id;
@JsonProperty("Title")
private String title;
@JsonProperty("Body")
private String body;
@JsonProperty("UserId")
private int userId;
我正在尝试将我的 json 列表放入我的代码中,但我一直收到此错误。
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:840)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1206)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1592)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1570)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3205)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3188)
at dev.lightt.Application.main(Application.java:34)
我的密码是
public static final String POSTS_API_URL = "http://localhost:3000/Leaders";
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.GET()
.header("accept", "application/json")
.uri(URI.create(POSTS_API_URL))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// parse JSON
ObjectMapper mapper = new ObjectMapper();
List<Post> posts = mapper.readValue(response.body(), new TypeReference<>() {
});
posts.forEach(System.out::println)
我正在查看 restful API 教程,但它没有提到这一点。
我的Json有点像
{
"UserId":1,
"Id":1,
"Title":"Life",
"Body":"Man suffers only because he takes seriously what the gods made for fun."
},
{
"UserId":1,
"Id":2,
"Title":"Nature",
"Body":"Without birth and death, and without the perpetual transmutation of all the forms of life, the world would be static, rhythm-less, undancing, mummified."
},
这是 Post Class 代码。它是说 getter 和 setter 没有被使用。唯一没有说明的是 getUserId()、getTitle() 和 getId()。
public class Post {
private int id;
private String title;
private String body;
private int userId;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
@Override
public String toString() {
return "Post{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
'}';
}
}
}
映射区分大小写,因此您可以:
- 将您的 json 更改为
{
"userId":1,
"id":1,
"title":"Life",
"body":"Man suffers only because he takes seriously what the gods made for fun."
}
- 映射 POJO 中的属性
@JsonProperty("Id")
private int id;
@JsonProperty("Title")
private String title;
@JsonProperty("Body")
private String body;
@JsonProperty("UserId")
private int userId;