使用 Moshi 改造 - 将 JsonArray 转换为字符串
Retrofit with Moshi - convert JsonArray to String
下面我准备了一些我在向服务器执行查询时使用的代码。
来自服务器 return 的响应 json 格式的书籍列表。 params
字段之一包含 json 数组中的列表。
如何强制 Moshi 将该字段视为原始字符串?
这是对我的代码的解释。
这是我调用 Retrofit 实例的伪class。
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();
}
}
这是一本书 class,其中包含为 Moshi 准备的字段。
@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
);
我尝试过的是我将 return 书 class 中的类型 Params
更改为 String
但我 return 对 Expected a string but was BEGIN_ARRAY at path $[0].params
.
好的,所以我已经阅读了 Moshi 文档,将任何字段转换为 json 字符串似乎很容易。我不知道如何即时解析它,但这是在你准备好后如何解析的解决方案(在我的例子中)Book
object.
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<Params> jsonAdapter = moshi.adapter(Params.class);
String json = jsonAdapter.toJson(body.getParams());
就是这样。
下面我准备了一些我在向服务器执行查询时使用的代码。
来自服务器 return 的响应 json 格式的书籍列表。 params
字段之一包含 json 数组中的列表。
如何强制 Moshi 将该字段视为原始字符串?
这是对我的代码的解释。
这是我调用 Retrofit 实例的伪class。
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();
}
}
这是一本书 class,其中包含为 Moshi 准备的字段。
@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
);
我尝试过的是我将 return 书 class 中的类型 Params
更改为 String
但我 return 对 Expected a string but was BEGIN_ARRAY at path $[0].params
.
好的,所以我已经阅读了 Moshi 文档,将任何字段转换为 json 字符串似乎很容易。我不知道如何即时解析它,但这是在你准备好后如何解析的解决方案(在我的例子中)Book
object.
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<Params> jsonAdapter = moshi.adapter(Params.class);
String json = jsonAdapter.toJson(body.getParams());
就是这样。