我想解析json值,但是有些值没有键。
像这样
"geometry": {
"type": "LineString",
"coordinates": [
[
127.08373748622218,
37.529508099979225
],
[
127.08355138558433,
37.529735847943925
]
]
}
Geometry.class
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Geometry {
private String type;
private Coordinate coordinates;
}
Coordinate.class
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Coordinate {
private List<Double[]> xy;
}
然后我看到了这个错误
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `kr.seoulmaas.ieye.service.dto.path.walk.Coordinate` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 133] (through reference chain: kr.seoulmaas.ieye.service.dto.path.WalkPathResDto["features"]->java.util.ArrayList[0]->kr.seoulmaas.ieye.service.dto.path.walk.Feature["geometry"]->kr.seoulmaas.ieye.service.dto.path.walk.Geometry["coordinates"])
答案 0 :(得分:1)
private Coordinate coordinates;
应该为private List<Coordinate> coordinates;
,因为它是JSON中的数组,但是由于该数组仅包含数组,因此您需要具有列表列表:List<List<Double>> coordinates
(由@JBNizet建议)。
答案 1 :(得分:0)
在您的数据中,coordinates
是list
中的list
。因此,以这种方式定义您的Geometry类:
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Geometry {
private String type;
private List<Coordinate> coordinates;
}
希望这会有所帮助。
答案 2 :(得分:0)
对不起,我来晚了。
我通过JsonNode解决了这个问题。
这是我的代码。
public class Geometry {
private String type;
private JsonNode coordinates;
}