发送 ArrayList
问题描述:
我想把这样的东西发送到服务器
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);
}