ObjectMapper-无法反序列化实例java.lang.Double

ObjectMapper-无法反序列化实例java.lang.Double,java,android,json,jackson,Java,Android,Json,Jackson,我想用下面的代码从Node.js发送的字符串中获取数据: User[] user2 = mapper.readValue(resultPayload, User[].class); 我的用户类: public class User { private double lat; private double lon; public User() { } public User(double lat, double lon) { this

我想用下面的代码从Node.js发送的字符串中获取数据:

User[] user2 = mapper.readValue(resultPayload, User[].class); 
我的用户类:

public class User {
    private double lat;
    private double lon;

    public User() {
    }

    public User(double lat, double lon) {
        this.lat = lat;
        this.lon = lon;
    }

    public double getLocationLat(){return lat;}

    public void setLocationLat(double lat){this.lat = lat;}

    public double getLocationLon(){return lon;}

    public void setLocationLon(double lon){this.lon = lon;}

}
但我得到这样一个警告:

WARNING: could not load Java7 Path class
/com.amazon.mysampleapp W/System.err: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Double out of START_OBJECT token
我的JSON字符串包含:

[{"locationLon":{"N":"16.946397721767426"},"locationLat":{"N":"52.447558225994904"}},{"locationLon":{"N":"16.88841037452221"},"locationLat":{"N":"52.44599882989592"}},{"locationLon":{"N":"16.94861490279436"},"locationLat":{"N":"52.44514319230585"}}]
步骤1:Location.java

import com.fasterxml.jackson.annotation.JsonProperty;

public class Location {
private double N;
public Location() {
  }
public Location(double n) {
    N = n;
  }
@JsonProperty("N")
public double getN() {
    return N;
  }
public void setN(double n) {
    N = n;
  }
@Override
public String toString() {
    return "N=" + N;
  }
}
步骤2:User.java

public class User {
private Location locationLat;
private Location locationLon;

public User() {
  }
public User(Location locationLat, Location locationLon) {
    super();
    this.locationLat = locationLat;
    this.locationLon = locationLon;
  }
public Location getLocationLat() {
    return locationLat;
  }
public void setLocationLat(Location locationLat) {
    this.locationLat = locationLat;
  }
public Location getLocationLon() {
    return locationLon;
  }
public void setLocationLon(Location locationLon) {
    this.locationLon = locationLon;
  }
@Override
public String toString() {
    return "User [locationLat=" + locationLat + ", locationLon=" + locationLon + "]";
  } 
}
步骤3:

String resultPayload=new String(Files.readAllBytes(new File("D:/test3.json").toPath()));
ObjectMapper mapper = new ObjectMapper();
User[] users = mapper.readValue(resultPayload, User[].class); 
System.out.println(Arrays.toString(users));

请考虑所有上述变化并查看结果。

< P>步骤1:位置。java < /P>
import com.fasterxml.jackson.annotation.JsonProperty;

public class Location {
private double N;
public Location() {
  }
public Location(double n) {
    N = n;
  }
@JsonProperty("N")
public double getN() {
    return N;
  }
public void setN(double n) {
    N = n;
  }
@Override
public String toString() {
    return "N=" + N;
  }
}
步骤2:User.java

public class User {
private Location locationLat;
private Location locationLon;

public User() {
  }
public User(Location locationLat, Location locationLon) {
    super();
    this.locationLat = locationLat;
    this.locationLon = locationLon;
  }
public Location getLocationLat() {
    return locationLat;
  }
public void setLocationLat(Location locationLat) {
    this.locationLat = locationLat;
  }
public Location getLocationLon() {
    return locationLon;
  }
public void setLocationLon(Location locationLon) {
    this.locationLon = locationLon;
  }
@Override
public String toString() {
    return "User [locationLat=" + locationLat + ", locationLon=" + locationLon + "]";
  } 
}
步骤3:

String resultPayload=new String(Files.readAllBytes(new File("D:/test3.json").toPath()));
ObjectMapper mapper = new ObjectMapper();
User[] users = mapper.readValue(resultPayload, User[].class); 
System.out.println(Arrays.toString(users));

请考虑所有的变化,看看结果。

它起作用了!非常感谢。我能用弦做同样的事吗?它起作用了!非常感谢。我能用弦做同样的事吗?