首页 > 解决方案 > 如何使用 RestTemplate 解析没有键的 json 值?

问题描述

我想解析 json 值,但有些值没有键。

像这样

"geometry": {
                "type": "LineString",
                "coordinates": [
                    [
                        127.08373748622218,
                        37.529508099979225
                    ],
                    [
                        127.08355138558433,
                        37.529735847943925
                    ]
                ]
            }

几何类

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Geometry {
    private String type;
    private Coordinate coordinates;
}

坐标类

@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"])

标签: javajsonspring-bootresttemplate

解决方案


private Coordinate coordinates;应该是private List<Coordinate> coordinates;因为它是 JSON 中的一个数组,但由于该数组只包含数组,因此您需要一个列表列表:List<List<Double>> coordinates(@JBNizet 建议)。


推荐阅读