Retrofit,Android,如何使用RequestOrderStatusBean对象RequestOrderStatusBean对象(Retrofit @Body参数)

时间:2017-07-10 09:38:52

标签: android retrofit rx-java

改造请求API格式(Android):

 @POST("getOrderStatus")
 @Headers("Content-Type:application/json")
 Observable<Response> getOrderInfo(@Query("timeStamp") long ts, @Body RequestOrderStatusBean bean);

BuildRequestOrderStatusBean.java

 public class BuildRequestOrderStatusBean {
        public int startNum;
        public int endNum;
    }

RequestOrderStatusBean.java

RequestOrderStatusBean在Retrofit API getOrderInfo 中是 @Body参数

RequestOrderStatusBean对象将使用许多相同的数据结构但不同的var名称BuildRequestOrderStatusBean对象构建。

 public class RequestOrderStatusBean {
    // TODO: How to use BuildRequestOrderStatusBean to build RequestOrderStatusBean object?
     /**
      {
        "arrayA" : { "startNum" : 10,  "endNum" : 50  },
        "arrayB" : { "startNum" : 100, "endNum" : 200 },
        "arrayC" : { "startNum" : 230, "endNum" : 300}
        ...
     */
    }

QA:如何使用BuildRequestOrderStatusBean对象构建RequestOrderStatusBean对象(Retrofit @Body参数)?

价:

  • com.squareup.retrofit:改型:1.9.0
  • io.reactivex:rxjava:1.1.0
  • io.reactivex:rxandroid:1.1.0
  • com.squareup.okhttp:okhttp:2.6.0
  • com.google.code.gson:GSON:2.2.4

1 个答案:

答案 0 :(得分:1)

使用动态键创建模型类是不可能的,您可以使用 JsonObject 来实现相同的功能(请仔细查看其 JsonObject 而不是JSONObject)

JsonObject arrayA = new JsonObject();
arrayA.addProperty("startNum", 10);
arrayA.addProperty("endNum", 50);

JsonObject arrayB = new JsonObject();
arrayB.addProperty("startNum", 100);
arrayB.addProperty("endNum", 200);

JsonObject object = new JsonObject();
object.add("arrayA", arrayA);
object.add("arrayB", arrayB); 

其输出

{
   "arrayA":{
            "startNum":10,"endNum":50
   },
   "arrayB":{
            "startNum":100,"endNum":200
   }
}

这只是一个示例,您可以使用for循环等添加任意数量的对象。

然后在改造中将界面方法更改为 @Body JsonObject bean

 @POST("getOrderStatus")
 @Headers("Content-Type:application/json")
 Observable<Response> getOrderInfo(@Query("timeStamp") long ts, @Body JsonObject bean);

改造将像任何其他模型类一样处理它。