我必须以以下模型发送数据:{"TransactionType": "testType","TransactionReference": "testSectionReference","TransactionDate": "2018-10-22T06:22:30.632Z","TransactionLines": [{ "ProductReference": "testProductReference", "ShipDate": "2018-10-22T06:22:30.632Z", "Quantity": 1, "AwardAmount": 2.0, "TotalAmount": 3.0}]}transactionBody为此,我创建了一个,在请求中将其作为正文发送,如下所示:@POST("/myCustomUrlPath")Call<Transaction> createTransaction( @Body TransactionBody transactionBody );将TransactionBody具有以下参数:交易类型 - String交易参考 - String交易日期 - String交易线 - TransactionLines //(my custom model)一切似乎都很好,直到我测试请求并看到我的TransactionLines模型的属性不是这样发送的:"productReference":"testProductReference"但相反,它们与我的 java 类路径一起发送,如下所示:"model.transactionLines.productReference":"testProductReference"这当然会使我的服务器返回错误,因为它在期待productReference而不是model.transactionLines.productReference. 如何在变量名之前删除我的java类模型的路径?编辑:我不认为我的问题与建议的可能已经提出的问题相近。他们要求在 json 中发布一个数组,而我在发布 json post 中使用的自定义对象中的变量名称时遇到了问题。但是,@Jeel Vankhede 是对的。序列化变量的名称删除了我的 java 类的路径,现在请求填充了正确的数据。谢谢!
1 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
正如 Jeel 在评论中建议的那样,您应该@SerializedName在模型类中使用注释。这是您的模型的外观:
@SerializedName("productReference")
private String productReference;
在你的TransactionLines课上。当未指定此属性时,它只会使用序列化的默认名称,这通常是可行的,但如果出于某种原因您想要不同的名称,则可以在此处指定它。例如,当我真的不喜欢将我的 Java 变量命名为some_property,而 API 需要像这样调用它时,我会使用它,我将执行以下操作:
@SerializedName("some_property")
private String someProperty;
添加回答
举报
0/150
提交
取消