android - 使用 Moshi 改造 - 将 JsonArray 转换为字符串

标签 android retrofit2 moshi

下面我准备了一些我在对服务器执行查询时使用的代码。

服务器的响应返回 json 格式的书籍列表。 params 字段之一包含 json 数组中的列表。

我如何强制 Moshi 将该字段视为原始字符串?

这是对我的代码的解释。

这是我调用 Retrofit 实例的伪类。

public final class RestApi {
    private static final String API_ENDPOINT_KEY = "...";
    private final MyApi myApi;

    private RestApi() {
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        OkHttpClient client = builder.build();

        final Retrofit retrofit = (new Retrofit.Builder())
                .baseUrl(API_ENDPOINT_KEY)
                .client(client)
                .addConverterFactory(MoshiConverterFactory.create())
                .build();

        myApi = retrofit.create(MyApi.class);
    }

    public static RestApi getInstance() {
        return RestApiGazeta.InstanceHolder.INSTASNCE;
    }

    private static final class InstanceHolder {
        private static final RestApi INSTASNCE = new RestApi();
    }
}

这是为 Moshi 准备好字段的 Book 类。

@Generated("com.robohorse.robopojogenerator")
public class Book{

    @Json(name = "pages")
    private int pages;

    @Json(name = "params")
    private Params params;

}

这是查询图书列表的 Retrofit 查询。

@GET("android/getBooks.json")
Call<List<Book>> getBooks(
        @Query("section") String section
);

我尝试的是将 Book 类类型 Params 中的返回类型更改为 String 但我返回的异常是关于 Expected a string but be GIN_ARRAY at path $[0].params.

最佳答案

好的,所以我已经阅读了 Moshi 文档,将任何字段转换为 json 字符串似乎很容易。我不知道如何即时解析它,但这是在您准备好(在我的例子中)Book 对象后如何解析的解决方案。

Moshi moshi = new Moshi.Builder().build();
JsonAdapter<Params> jsonAdapter = moshi.adapter(Params.class);
String json = jsonAdapter.toJson(body.getParams());

就是这样。

关于android - 使用 Moshi 改造 - 将 JsonArray 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49156426/

相关文章:

java - 将库添加到 Android Studio 时出错

java - 无法将照片从相机上传到服务器。非法参数异常 : column '_data' does not exist

kotlin - okhttp3 moshi-JsonAdapter运行时问题

java - Moshi 预期为 BEGIN_OBJECT 但为 BEGIN_ARRAY - 自定义转换器被忽略

json - Moshi + Kotlin + SealedClass

java - 每次应用程序运行时,listView 项目都会重复并变得越来越多

android - 如何在任何 Android 手机中查找和收集给定联系人中的所有可用信息?

java - Android 设备中的运行时错误

android - 改造 Android : how to fetch Json data using id and display into textview

android - Retrofit找不到主机