JSON格式化android中的String

时间:2017-05-22 18:59:03

标签: java android json server formatting

我正在尝试将位置发送到服务器。我应该将这些值发送到服务器。

发送至服务器

{ “type”:”location”,
”id”:”ID”,
”longitude”:”LONGITUDE”,
“latitude”:”LATITUDE” }

我正在尝试发送的字符串

String sendPos = "{\"type\":\"location\",\"id\":\"" +getGrpID() + "\",\"longitude\":\"" + longitude + "\",\"latitude\":\"" + latitude + "}";

我应该收到与我发送的相同的消息,但我没有得到正确的纬度和长期,而是我得到了NaN。

3 个答案:

答案 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);

注意:纬度和经度属于双数据类型。