【问题标题】:How to get quoted String from retrofit 2 response?如何从改造 2 响应中获取引用的字符串?
【发布时间】:2018-12-19 21:44:44
【问题描述】:

现在我以这种方式得到响应:

response.body = {users=[{identity=poJwA, firstname=abc, lastname=abac, 电子邮件=abac@abc.com, profile_image=https://s3-us-west-2.amazonaws.com/talent-advocate/default-avatar.png}, {身份=AbwOA,名字=abcd,姓氏=efgh,电子邮件=jayhghl@o2h.com, profile_image=https://s3-us-west-2.amazonaws.com/talent-advocate/default-avatar.png}

我想用引用的字符串作为响应:

{
   "data":[
      {
         "identity":"pdavp",
         "social_media":"twitter",
         "is_company":0,
         "site_identity":0,
         "active":1,
         "created_at":{
            "date":"2018-09-21 05:39:07.000000",
            "timezone_type":3,
            "timezone":"UTC"
         }
      }
   ]
}

这样我就可以转换成我的 JSON 对象了。

或者我可以将响应转换为不同于 API 响应的自定义模型吗?

【问题讨论】:

    标签: android json retrofit2


    【解决方案1】:

    如果您想在改造调用中获得原始响应,则需要添加标量转换器。

    在您的build.gradle 文件中添加:

    implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'
    

    然后在构建改造实例时,添加转换器:

    val retrofit: Retrofit = Retrofit.Builder()
                .baseUrl(URL)
                .client(OkHttpClient.Builder().build())
                .addConverterFactory(ScalarsConverterFactory.create()) // Add this line
                // Other converters or callbacks.
                .build()
    

    这样您就可以访问原始字符串并以您喜欢的任何方式处理 json。

    但作为建议,请查看 Moshi from Square(或 GSON),您将能够将您的 API JSON 响应直接转换为您的 Java/Kotlin 对象,并且还有一个转换器,您将只需要添加依赖即可:

    implementation 'com.squareup.retrofit2:converter-moshi:2.3.0'
    

    然后添加转换器进行改造:

    .addConverterFactory(MoshiConverterFactory.create())
    

    【讨论】:

    • 我用过 GsonConverterFactory
    • GsonConverterFactory 不会给你原始字符串,如果你真的需要那个字符串,你必须使用标量转换器并告诉改造你会期待一个字符串。
    • @tyson 你真的想要原始字符串,还是想要模型对象?如果是后者,则不需要标量转换器,但可以使用 GsonConverterFactory。在您的 API 接口中,让调用返回类似 Call<MyPOJO> 的内容
    • 我猜测了一下,没有看到你的接口文件是什么样的。我的意思是您可能在某个方法中添加了GET("/.../") 注释的文件,它应该返回Call<Something>?
    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2017-04-05
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多