使用Jackson将ObjectNode转换为Java对象

RAS

我有一个json:

{
"response": {
    "GeoObjectCollection": {
        "featureMember": [
            {
                "GeoObject": {
                    "description": "Country",
                    "name": "City",
                    "Point": {
                        "pos": "31.992615 45.057626"
                    }
                }
            },
            {
                "GeoObject": {
                    "description": "Country",
                    "name": "City",
                    "Point": {
                        "pos": "49.242414 49.895935"
                    }
                }
            }
        ]
    }
}

}

我创建了DTO:

GeographicCoordinateDto.java

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class GeographicCoordinateDto {
   @JsonProperty("description")
   private String location;
   @JsonProperty("name")
   private String cityName;
   @JsonProperty("Point")
   private GeographicCoordinatesDto geoCoordinates;
}

GeographicCoordinatesDto.java

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class GeographicCoordinatesDto {
   @JsonProperty("pos")
   private String geoCoordinates;
}

然后我得到JsonNode

List<JsonNode> responseArrayOfObjects = mapper.readValue(new URL(yandexGeoCoderRestUrl+address), ObjectNode.class).findValues("GeoObject");

我正在尝试转换为我的DTO

GeographicCoordinatesDto geo = mapper.convertValue(responseArrayOfObjects.get(0), GeographicCoordinatesDto.class);

但是,我有空对象:

GeographicCoordinatesDto(geoCoordinates=null)

有什么事吗

更新:

responseArrayOfObjects包含:

在此处输入图片说明

球队

您正在尝试posGeographicCoordinatesDto对象获取信息,但它位于的Point对象内部GeographicCoordinatesDto

您可以改为:

List<JsonNode> responseArrayOfObjects = mapper.readValue(new URL(yandexGeoCoderRestUrl+address), ObjectNode.class).findValues("Point");

或为Point创建另一个类:

@JsonIgnoreProperties(ignoreUnknown = true)
class Point {
    @JsonProperty("pos")
    private String geoCoordinates;
}

并用于GeographicCoordinatesDto

@JsonIgnoreProperties(ignoreUnknown = true)
class GeographicCoordinatesDto {
   @JsonProperty("Point")
   private Point point;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 jackson 将 xml 转换为 Java 对象

使用Jackson将Java对象转换为JSON

使用Jackson Java将JSON转换为POJO作为对象类

使用Jackson将许多对象转换为JSON

使用jackson在java中将pojo(对象列表)转换为json

Jackson Json:如何将数组转换为JsonNode和ObjectNode?

如何将JsonNode转换为ObjectNode

com.fasterxml.jackson.databind.node.ObjectNode无法转换为org.codehaus.jackson.node.ObjectNode

在Jackson中将Java对象转换为JsonNode

使用自定义反序列化器 Jackson 将 .json 文件转换为 Java 对象

使用 jackson 将 csv 转换为 json

使用Jackson将JSONArray转换为Map

Jackson-将List <Map <String,String >>转换为Json String的Java对象

如何使用 Jackson/ObjectMapper 将注释(其所有差异属性)转换为 JSON 对象?

如何使用XMLMapper(Jackson)将List <String []>转换为XML对象?

将Json对象转换为Java对象

将Json对象转换为Java对象

使用Marshaller将Java对象转换为Json

使用Java 8将复杂对象列表转换为Map

使用Groovy JsonBuilder将Java对象转换为JSON

如何使用轴1.4将Java对象转换为XML?

使用杰克逊将json转换为java对象

使用GSon将匿名Java对象类型转换为JSON

使用Jaxb将xml文件转换为Java对象

使用特定语法将Java对象转换为JSON

如何使用java将简单的json对象转换为csv?

使用JAXB将Oracle Pivot XML转换为Java对象

使用Java将字符串转换为JSON对象

使用别名属性将Java对象转换为Json请求