当前位置: 首页 > 知识库问答 >
问题:

Kotlin改造将JSON对象转换为Kotlin对象

阴礼骞
2023-03-14

我有来自一个API的数据,看起来如下所示

{"post code": "45219", "country": "United States", "country abbreviation": "US", "places": [{"place name": "Cincinnati", "longitude": "-84.5131", "state": "Ohio", "state abbreviation": "OH", "latitude": "39.127"}]}

使用reverfit,我尝试使用下面的代码将它转换为一个对象。为了测试,它目前被提供了一个静态变量,如邮政编码,这是已知的工作。

服务类。

class AddressService {

fun fetchCityAndState(zipCode : String) : MutableLiveData<Address>{
    var _addresses = MutableLiveData<Address>()
    val service = RetroFitClientInstance.retrofitInstace?.create(IAddressDAO::class.java)
    val call = service?.getLocation("https://api.zippopotam.us/us/$zipCode")
    call?.enqueue(object: Callback<Address> {
        override fun onFailure(call: Call<Address>, t: Throwable) {
            print("Could not retrieve service response")
        }

        override fun onResponse(call: Call<Address>, response: Response<Address>) {
            _addresses.value = response.body()
        }
    })
    return _addresses
}

地址类

data class Address(@SerializedName("post code") var postCode: String, @SerializedName("country") var country: String, @SerializedName("country abbreviation") var countryAbbreviation: String, @SerializedName("places") var placeInformation: ArrayList<Location>)

位置类

class Location (@SerializedName("place name") var name: String, @SerializedName("longitude") var longitude: String, @SerializedName("state") var state: String, @SerializedName("state abbreviation") var stateAbbreviation: String, @SerializedName("latitude") var latitude: String)

地址接口

@GET
fun getLocation(@Url zipCodeUrl:String) : Call<Address>

在使用调试器时,我看到调用跳过onFailure和onResponse函数,只返回仍然为空的addresses。我甚至在这两个函数中都放入了print语句,但终端中都没有显示这两个函数,以确认这两个函数都没有运行。当它发生时,终端中没有错误。

共有1个答案

公冶龙野
2023-03-14

是否正确配置了改装?共享代码或确保传递okhttpclient和转换器(通常是gson转换器)

 类似资料:
  • 我在编写从JSON字符串到对象列表的转换代码时遇到了Kotlin的问题。 类型不匹配。必需:键入!找到:()→单位 那么有没有解决办法让它为科特林工作呢?

  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议:

  • 我需要帮助转换JSON对象中的字符串。 这是我从WebView得到的回应 回应是 我得到的响应是在一个字符串中。我必须将它转换成JSON。我如何实现这一点?

  • 例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。

  • 问题内容: 这很简单,但是很挣扎。帮助我。 我有一个json数据{“ abc”:“ test”,“ bed”:“ cot”,“ help”:“ me”} 我想将上面的jsonObject转换为JSON ARRAY,例如[{“ abc”:“ test”,“ bed”:“ cot”,“ help”:“ me”}] 我只得到价值观。请帮我解决这个问题。 问题答案: 直接将JsonObject即obj放入