Java 改型:使用JSON数组发送POST请求

Java 改型:使用JSON数组发送POST请求,java,android,retrofit,Java,Android,Retrofit,我有一个JsonElement JsonElement对象,作为另一个GET请求的响应接收它jsonElement.toString() 看起来像JSON数组: 我需要通过另一个使用改装的POST请求发送此字符串。如何通过POST请求发送jsonElement或String对象? 我的方法声明该怎么看? 例如: @POST("/api/geo/getLoc") public void getFriendsLocation(/* something */, Cal

我有一个
JsonElement JsonElement
对象,作为另一个GET请求的响应接收它<代码>jsonElement.toString() 看起来像JSON数组:

我需要通过另一个使用改装的POST请求发送此字符串。如何通过POST请求发送jsonElement或String对象? 我的方法声明该怎么看? 例如:

 @POST("/api/geo/getLoc")
    public void getFriendsLocation(/* something */,  Callback<JsonElement> response);
@POST(“/api/geo/getLoc”)
public void getFriendsLocation(/*something*/,回调响应);

如果您通过请求主体发送数据,您的实现应该如下所示:

  • 根据字段定义模型(区分大小写的“名称”->字符串名称等)
  • 也可以这样设置api函数

    @POST("/api/geo/getLoc")
    public void getFriendsLocation(@Body YourClass classObject,   Callback<JsonElement> response);
    
    @POST("/api/geo/getLoc")
    public void getFriendsLocation(@QueryMap Map<String, Object>,     Callback<JsonElement> response);
    

  • 如果您通过参数发送数据,您可以使用Gson执行此操作

  • 假设您有一个具有id、number和FriendNumber等字段的类。定义一个函数:

    public static Map<String, Object> getMapFromObject(Object o) {
        Gson gson = new Gson();
        Type stringObjectMap = new TypeToken<Map<String, Object>>() {
         }.getType();
        return gson.fromJson(gson.toJson(o), stringObjectMap);
    }
    

  • 我没有编写包含类定义和回调函数的完整代码,因为它们取决于您的定制。我假设您需要发送body,所以请尝试第一种方法。

    您使用的是spring mvc吗?spring中有注释@RequestBody可以实现这一点mvc@neustart47:你能找到解决这个问题的办法吗?我也面临同样的问题。不确定我应该如何传递json数组。任何指示都会有帮助!谢谢检查我对与你类似问题的回答1.谢谢你的回答。我创建了一个模型类,在创建了一个模型类的对象之后,将它交给了getMapFromObject函数。由于此函数的工作,我收到了正确的贴图对象。它看起来像:[0]:“FriendNumber”->“380935275259”[1]:“Number”->“380936831127”[2]:“Id”->“516.0”。我在调试模式下看到了这一点。但由于请求,我收到:500个内部服务器错误。服务器肯定正常工作,所以我的代码中存在问题。可能有什么问题?您是否在服务器端手动进行字符串解析?您是希望字段位于请求体还是作为参数?如果您可以使用Postman等软件共享示例工作post请求,我可以提供更多帮助。我不知道服务器端是如何工作的,我一直使用JSON数组与它通信。这是邮递员的例子:我已经根据给定的额外信息编辑了答案。您应该实现第一种方法。
    @POST("/api/geo/getLoc")
    public void getFriendsLocation(@QueryMap Map<String, Object>,     Callback<JsonElement> response);
    
    getFriendsLocation(getMapFromObject(yourClassObjectThatIncludesFields), new Callback .... )