我正在尝试将位置发送到服务器。我应该将这些值发送到服务器。
发送至服务器
{ “type”:”location”,
”id”:”ID”,
”longitude”:”LONGITUDE”,
“latitude”:”LATITUDE” }
我正在尝试发送的字符串
String sendPos = "{\"type\":\"location\",\"id\":\"" +getGrpID() + "\",\"longitude\":\"" + longitude + "\",\"latitude\":\"" + latitude + "}";
我应该收到与我发送的相同的消息,但我没有得到正确的纬度和长期,而是我得到了NaN。
答案 0 :(得分:0)
您不应该手动构建JSON字符串。 只需使用框架为您构建JSON的内容:
JSONObject jObj = new JSONObject();
try {
jObj.put("type", "location");
jObj.put("id", getGrpID());
jObj.put("longitude", longitude);
jObj.put("latitude", latitude);
} catch (JSONException e) {
e.printStackTrace();
}
String sendPos = jObj.toString();
答案 1 :(得分:0)
NaN是“非数字”的缩写。 NaN表示监控系统未接收任何数字数据。
1 - coordenates是否真的采用合适的格式?
2 - 这些值在服务器上是否正确?
坐标必须是“长”类型。
答案 2 :(得分:0)
使用Gson反序列化。
步骤1:创建标准POJO类。
public class Data{
private String type;
private String id;
private double longitude;
private double latitude;
public Data(String type, String id, double longitude, double latitude) {
this.type = type;
this.id = id;
this.longitude = longitude;
this.latitude = latitude;
}
}
步骤2:通过Gson轻松将其转换为String。
Data data = new Data("location", getGrpID(), longitude, latitude);
String sendPos = new Gson().toJson(data);
注意:纬度和经度属于双数据类型。