gpt4 book ai didi

android - 发布带有Retrofit2问题的自定义对象

转载 作者:行者123 更新时间:2023-12-02 13:44:26 25 4
gpt4 key购买 nike

我目前正在为项目制作第一个自定义Android应用程序,但无法解决以下问题。 (我做了很多研究,但没有找到类似的东西)

2020-02-15 11:41:30.075 10337-10337/com.example.quickmatch I/SigninFragmentViewModel: Required value 'surname' missing at $post 

我正在尝试将此自定义对象发布到我的后端服务器在线:
@JsonClass(generateAdapter = true)
data class PlayerObject(
val id : Int?,
@Json(name = "surname") val surname : String,
@Json(name = "first_name") val firstName : String,
val pseudo : String,
@Json(name = "mdp") val password : String,
@Json(name = "mail_address") val mailAddress : String,
@Json(name = "phone_number") val phoneNumber : String?,
@Json(name = "scored_goals") val scoredGoals : Int,
@Json(name = "conceded_goals") val concededGoals : Int,
@Json(name = "matches_played") val matchesPlayed : Int,
val victories : Int,
val avatar : String?,
val bio : String?
)

我正在将Retrofit2和Moshi与协程一起使用:
implementation "com.squareup.retrofit2:retrofit:2.5.0"
implementation "com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2"
implementation "com.squareup.retrofit2:converter-moshi:2.5.0"

这是我的Retrofit实例:
/* Create Moshi object which will parse the responses */
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()

/* Retrofit builder with converter for response and base url */
private val retrofit = Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(moshi))
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.baseUrl(BASE_URL)
.build()

要发送我的POST请求,我使用了以下方法(如果成功,它应该将创建的播放器发回给我):
@POST("...")
fun addPlayer(@Body player: PlayerObject) : Deferred<PlayerObject>

我称之为传递此Object:
var newPlayerObject = PlayerObject(null, name, firstName, pseudo, password, mailAddress, phoneNumber, 0, 0, 0, 0, null, null )

我从带有基本 binding.editText.text.toString()的EditTexts获取非null值
最大的问题是,我在请求之前在ViewModel中以及在用户界面的 onClickListener按钮中记录了每个值(名称,姓氏等),该按钮触发了ViewModel,一切看起来都很好,并且与我在Edits中键入的内容匹配但是当应用发布时,似乎对象的每个属性都设置为null。由于 surname不可为空,因此出现了先前的错误。我试图使它为可空值,并且下一个属性也是相同的问题。
还要注意,传递每个属性为null的对象都可以。

最佳答案

我发现指定use-site targets对Kotlin数据类中的字段很有帮助。

如果您尝试将注释修改为以下格式会怎样?
@field:Json(name = "surname") val surname : String

关于android - 发布带有Retrofit2问题的自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com