geojson - No suitable constructor found for type GeoJsonPoint -


having lot of trouble figuring out i'm doing wrong. sadly had working @ 1 point, can't determine changed broke it.

from understand should supported now.

object in question:

@document public class place {      public final static string uri = "/place";      @id private string id;      private string name;      private string caption;      private geojsonpoint location;      public place() {}      public place(geojsonpoint geojsonpoint) {         this.location = geojsonpoint;     }      // proper getters & setters clipped. } 

the call (my version of spring boot includes x/y coords reason.)

{     "id": null,     "name": null,     "caption": null,     "location": {         "x": 41.988161,         "y": -87.6911499,         "type": "point",         "coordinates": [             41.988161,             -87.6911499         ]     } } 

the pom (maybe have wrong/clashing dependencies?)

<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"     xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelversion>4.0.0</modelversion>      <groupid>...</groupid>     <artifactid>...</artifactid>     <version>0.1.0</version>      <properties>         <start-class>com.nestorledon.hang2gether.core.application</start-class>          <!-- includes new geojson support. -->         <spring-data-releasetrain.version>fowler-release</spring-data-releasetrain.version>     </properties>      <parent>         <groupid>org.springframework.boot</groupid>         <artifactid>spring-boot-starter-parent</artifactid>         <version>1.3.0.m2</version>     </parent>      <dependencies>          <dependency>             <groupid>org.springframework.hateoas</groupid>             <artifactid>spring-hateoas</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.boot</groupid>             <artifactid>spring-boot-starter-web</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.security</groupid>             <artifactid>spring-security-web</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.security</groupid>             <artifactid>spring-security-config</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.security.oauth</groupid>             <artifactid>spring-security-oauth2</artifactid>         </dependency>          <dependency>             <groupid>org.springframework</groupid>             <artifactid>spring-test</artifactid>         </dependency>          <dependency>             <groupid>org.springframework</groupid>             <artifactid>spring-test-mvc</artifactid>             <version>1.0.0.m2</version>             <scope>test</scope>         </dependency>          <dependency>             <groupid>com.fasterxml.jackson.core</groupid>             <artifactid>jackson-databind</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.data</groupid>             <artifactid>spring-data-mongodb</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.data</groupid>             <artifactid>spring-data-rest-webmvc</artifactid>         </dependency>          <dependency>             <groupid>org.springframework.boot</groupid>             <artifactid>spring-boot-starter-test</artifactid>         </dependency>          <dependency>             <groupid>joda-time</groupid>             <artifactid>joda-time</artifactid>         </dependency>          <dependency>             <groupid>org.aspectj</groupid>             <artifactid>aspectjweaver</artifactid>         </dependency>          <dependency>             <groupid>org.aspectj</groupid>             <artifactid>aspectjrt</artifactid>         </dependency>      </dependencies>      <build>         <plugins>             <plugin>                  <artifactid>maven-compiler-plugin</artifactid>              </plugin>             <plugin>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-maven-plugin</artifactid>             </plugin>         </plugins>     </build>      <repositories>         <repository>             <id>spring-snapshots</id>             <url>http://repo.spring.io/libs-snapshot</url>             <snapshots><enabled>true</enabled></snapshots>         </repository>          <repository>             <id>spring-milestone</id>             <url>https://repo.spring.io/libs-milestone</url>             <snapshots><enabled>true</enabled></snapshots>         </repository>     </repositories>      <pluginrepositories>         <pluginrepository>             <id>spring-snapshots</id>             <url>http://repo.spring.io/libs-snapshot</url>             <snapshots><enabled>true</enabled></snapshots>         </pluginrepository>     </pluginrepositories>  </project> 

finally got working.

created custom jsondeserializer

public class geojsondeserializer extends jsondeserializer<geojsonpoint> {      private final static string geojson_type_point = "point";      private final static string json_key_geojson_type = "type";     private final static string json_key_geojson_coords = "coordinates";       @override     public geojsonpoint deserialize(jsonparser jp, deserializationcontext ctxt) throws ioexception {          final jsonnode tree = jp.getcodec().readtree(jp);         final string type = tree.get(json_key_geojson_type).astext();         final jsonnode coordsnode = tree.get(json_key_geojson_coords);          double x = 0;         double y = 0;         if(geojson_type_point.equalsignorecase(type)) {             x = coordsnode.get(0).asdouble();             y = coordsnode.get(1).asdouble();         }          else {             system.out.println(string.format("no logic present deserialize %s ", tree.astext()));         }          final geojsonpoint point = new geojsonpoint(x, y);          return point;     } } 

then specified converter on property itself.

@jsondeserialize(using = geojsondeserializer.class) private geojsonpoint location; 

Comments