package io.github.mat3e.earthquake.jsonObject;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"type",
"metadata",
"features",
"bbox"
})
public class DataModel {
@JsonProperty("type")
private String type;
@JsonProperty("metadata")
private Metadata metadata;
@JsonProperty("features")
private List<Feature> features = null;
@JsonProperty("bbox")
private List<Double> bbox = null;
@JsonProperty("type")
public String getType() {
return type;
}
@JsonProperty("type")
public void setType(String type) {
this.type = type;
}
@JsonProperty("metadata")
public Metadata getMetadata() {
return metadata;
}
@JsonProperty("metadata")
public void setMetadata(Metadata metadata) {
this.metadata = metadata;
}
@JsonProperty("features")
public List<Feature> getFeatures() {
return features;
}
@JsonProperty("features")
public void setFeatures(List<Feature> features) {
this.features = features;
}
@JsonProperty("bbox")
public List<Double> getBbox() {
return bbox;
}
@JsonProperty("bbox")
public void setBbox(List<Double> bbox) {
this.bbox = bbox;
}
}
当然,所有依赖项(子类追加在同一个字符串中)。
从外部API获取数据的代码是;
@GetMapping("/3")
public String getCostam() {
RestTemplate rest = new RestTemplate();
ResponseEntity<DataModel[]> responseEntity = restTemplate.getForEntity(url2, DataModel[].class);
Object[] objects = responseEntity.getBody();
MediaType contentType = responseEntity.getHeaders().getContentType();
HttpStatus statusCode = responseEntity.getStatusCode();
return statusCode.toString();
}
当我运行代码并试图获取adress“API/3”时,出现以下错误:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `[Lio.github.DataModel;` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 1]
感谢@Willem和@Mkarasik的帮助:
我在代码中做了以下更改
@GetMapping("/3")
public String getCostam() {
RestTemplate rest = new RestTemplate();
ResponseEntity<DataModel> responseEntity = restTemplate.getForEntity(url2, DataModel.class);
MediaType contentType = responseEntity.getHeaders().getContentType();
HttpStatus statusCode = responseEntity.getStatusCode();
System.out.println(responseEntity
.getBody().getFeatures());
return statusCode.toString();
}
为了得到地震发生的地方数组,我只是在特征类中ovverided方法
@Override
public String toString() {
return properties.getPlace();
}
我想从angular 8前端向spring boot API发送一个JSON对象。我是这些框架的新手,我有点迷茫。 错误: “无法将的实例从START_OBJECT标记反序列化到[源:(String)”{“coordines”:[{“lat”:76.00542202728906,“lng”:-71.76493508359451},{“lat”:62.96921913888247,“lng”:-11
无法将Json反序列化为列表集合。我使用的是Lombok,它保存字段变量: 我该怎么修好它?
谢谢你的回答。 编辑:这解决了问题:
我从Fitbit API得到一个json字符串。我想在列表对象中保存dateTime和value字段。我用的是jackson模块Kotlin。我为此创建了ActivitiesSteps数据类。 下面是我使用Jackson的代码: 并引发以下异常:
我试图读取这个json值并将其转换为java对象
下面是put请求的控制器映射: 当我运行以下来自邮递员的请求时: 我得到以下异常 我可能很简单,但我不明白我错过了什么?