关于使用Android Volley JSON Object请求来POST相关数组的问题。

大家好、我现在有一个数组需要从我们的安卓app POST给我们的服务器:该数组包含一个tag(location)和一个JSON对象(包括坐标A和坐标B)。根据我目前的理解,在传递给我们服务器的时候,需要把方括号也一起传递过去。数组案例如下:
[
"location",
{
"coordinateA":12.45817,
"coordinateB":23.7656
}
]

我用来构建如上数组的JAVA代码如下:

JSONArray array = new JSONArray();
JSONObject item = new JSONObject();
item.put("coordinateA", "21.787");
item.put("coordinateB", "46.856");
array.put(item);

JSONObject locationFinalObj = new JSONObject();
locationFinalObj.put("location", array);

目前我在使用Volley JSON Object Request的标准方式来做,问题是一直有收到服务器端发送过来的HTTP 417状态码。我们的服务器对于header并没有什么特殊要求,所以我在想是不是建立JSON数组的时候,方法不对。

多谢大家帮忙!

"[\"location\",{\"coordinateA\":12.45817,\"coordinateB\":23.7656}]"

要带[]的话,用字符串的方式提交吧

原因
JSON对象错误,
JSON一般是需要以大括号{}开始和结尾的

解决方法

简单来说,也就是在你的数组前面包一层变成一个{}的JSON对象,
前面加个key也就是"data",原先的数组作为一个value,从而构建出来一个json对象

所以,修改你的格式为:

{
  "data": [
    "location",
    {
      "coordinateA": 12.45817,
      "coordinateB": 23.7656
    }
  ]
}

后边解析json的时候,也别忘了先解析出来'data',
然后再按照你原先的方法解析数组即可


如有问题及时沟通

检查代码编译