在Android中如何在改造请求中传递JSON对象和检索JSON对象?

在Android中如何在改造请求中传递JSON对象和检索JSON对象?,android,json,android-adapter,retrofit,Android,Json,Android Adapter,Retrofit,我需要使用改装在Post请求中传递Json。我的Json如下所示: { "q": { "reg": "IND", "or": [ { "duration": "12" } ] }, "sort": "recent" } 我为上面的Json创建了pojo,使用类似于以下内容:RoomListing.java 现在我需

我需要使用
改装
Post
请求中传递
Json
。我的
Json
如下所示:

{
  "q": {
         "reg": "IND",
         "or": [
                {
                 "duration": "12"
                }
              ]
       },
 "sort": "recent"
}
我为上面的
Json
创建了
pojo
,使用类似于以下内容:
RoomListing.java

现在我需要发出一个
post
请求。因此,我创建了一个
API

public interface RoomListingAPI {

 @GET("/api/fetch")
 void getRoomListing(@Header("x-parse-session-token") String  
 token, @Body RoomListing list);
}
创建了一个
RestAdapter

 return new RestAdapter.Builder()
                .setEndpoint(BASE_URL)
                .build();

RoomListingAPI apiservice = restadapter.providesRestAdapter().create(RoomListingAPI.class);
现在我有点困惑,是否将
Json
(查看RoomListing.java)作为
post
请求发送,并接收
Json
作为响应


任何帮助都是值得的

首先,您需要将注释从
@GET
更改为
@POST
,以执行
POST
请求。接下来,假设您使用的是Reformation 1.9.x,您需要执行以下两项操作之一来获得结果JSON响应,具体取决于您想要的是同步响应还是异步响应:

  • 同步(在当前线程上)-将
    void
    更改为响应的pojo类型,类似于创建请求对象的方式(例如
    ResponseType yourMethod(@Body RequestType object);
  • 异步(在另一个线程上,使用回调)-将
    回调添加到方法末尾,然后在请求返回成功或不成功时调用该回调(例如
    void yourMethod(@Body RequestObject object,callback callback);

我希望你能工作,但它应该是这样的。

为什么不把你的json作为字符串发送呢?你可以使用import org.json.JSONArray和import org.json.JSONObject来创建json结构。我在改型中没有找到直接发送json的例子。我把json作为字符串发送改型/发布给我几分钟,然后演示谢谢你。谢谢你的回答,但我的请求中没有
YOURFIELDNAME
。我只是在
Body
中以原始格式传递
JSON
,我想在JsonObject中得到响应,因为它是动态的JSON。改型不是最好的选择-看看使用类似于Volley的东西,它会给你JSONObjects-改型是设计好的为了类型安全,涵盖“普通”案例web请求。我们不能将JSON对象作为post请求发送并接收JSON对象吗?
    public interface RoomListingAPI {

     @POST("/api/fetch")
     void getRoomListing(@Header("x-parse-session-token") String  
     token, @Field("YOURFIELDNAME") String json);
    }


//This method generates your json
private String yourJSON(){

        JSONObject jsonRoot = new JSONObject();
        JSONObject jsonObject1 = new JSONObject();
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject2 = new JSONObject();
        try{

            jsonArray.put(jsonObject2);

            jsonObject2.put("duration", "12");

            jsonObject1.put("reg", "IND");
            jsonObject1.put("or", jsonArray);

            jsonRoot.put("q", jsonObject1);
            jsonRoot.put("sort", "recent");

        }catch (JSONException e){

            e.printStackTrace();
        }
       return jsonRoot.toString();


    }


    RoomListingAPI apiservice = restadapter.providesRestAdapter().create(RoomListingAPI.class);
apiservice.getRoomListing("your_header_token",yourJSON())...