今天在使用Retrofit2+Rxjava2框架 上传jsonArray数据
上传以下数据放入服务器
添加接口
//批量增加人脸
@Headers("Content-Type: application/json")//需要添加头
@POST("face/saveBatchFaceInfo")
fun saveBatchFaceInfo(@Body faceInfoList:List<FaceInfoEntity>): Observable<ResultEntity>
当前写法是
var faceInfo =List<FaceInfoEntity>
RetrofitHelper.getApi().saveBatchFaceInfo(faceInfo)
.map {
return@map it
}
.compose(RxUtils.rxSchedulerHelper())
.subscribe({
}, {
mView.showError("${it.message}")
})
结果显而易见 报错了
Parameter type must not include a type variable or wildcard: java.util.List<实体类> (parameter #1)
for method Api.saveBatchFaceInfo
这个是是由于实体在Kotlin下不能被确认 需要再加下转换 就可以了
解决办法
入参加下转换就可以了
RetrofitHelper.getApi().saveBatchFaceInfo(getFace(faceInfo))
private fun <T> getFace(list: List<T>): List<FaceInfoEntity> {
val faces = LinkedList<FaceInfoEntity>()
list as List<FaceInfoEntity>
list.forEach {
val face = FaceInfoEntity()
//添加具体属性
faces.add(face)
}
return faces
}
这样就可以直接用了
时隔几天 突然发现一个很简便的的方法
直接添加注解 就可以了@JvmSuppressWildcards
//批量增加人脸
@Headers("Content-Type: application/json")//需要添加头
@POST("face/saveBatchFaceInfo")
fun saveBatchFaceInfo(@Body faceInfoList:@JvmSuppressWildcards List<FaceInfoEntity>): Observable<ResultEntity>`