本文介绍了发送 ArrayList<Object>带有改造的 POST 请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想把这样的东西发送到服务器
I want to send something like this to server
{
"InoorPersonID": "",
"Discount": 0,
"DiscountDescription": "",
"Description": "",
"OrderDetailList": [
{
"ProductID": 0,
"Amount": 0
}
],
"ClientId": "",
"ClientSecret": ""
}
这是我的服务接口
public interface StoreRetrofitSalesService {
@FormUrlEncoded
@POST(ServiceUrl.URL_ORDER_SET)
Call<ServiceResult<Integer>> orderSet(@Field("OrderDetailList") ArrayList<OrderDetail> orderDetails,
@Field("Discount") String discount,
@Field("ClientId") String clientId,
@Field("ClientSecret") String clientSecret,
@Field("Description") String description,
@Field("InoorPersonID") String inoorPersonId,
@Field("DiscountDescription") String discountDescription);
}
logcat 显示这个
The logcat show this
OrderDetailList=org.crcis.noorreader.store.OrderDetail%408208296&Discount=0&...
我有两个问题:
- 为什么 OrderDetailList 无法转换为 JSON.
- 我如何为这个参数使用@FieldMap.我最近测试了
Map
但它返回相同的结果.
- Why OrderDetailList can't convert to JSON.
- How can I use @FieldMap for this params.I recently test
Map<String, Object>
but it returns same result.
谢谢
推荐答案
使用 GSON
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(myBaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
像这样为您的数据创建一个模型
Create a model for your data like this
public class Order {
@SerializedName("InoorPersonID")
String inoorPersonId;
@SerializedName("Discount")
int discount;
@SerializedName("DiscountDescription")
String discountDescription;
@SerializedName("Description")
String description;
@SerializedName("OrderDetailList")
ArrayList<OrderDetail> orderDetailList;
@SerializedName("ClientId")
String clientId;
@SerializedName("ClientSecret")
String clientSecret;
//Don't forget to create/generate the getter and setter
}
并将您的服务更改为
public interface StoreRetrofitSalesService {
@POST(ServiceUrl.URL_ORDER_SET)
Call<ServiceResult<Integer>> orderSet(@Body Order order);
}
这篇关于发送 ArrayList<Object>带有改造的 POST 请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!