TypeParameter 作为表达式参数
TypeParameter as an Expression argument
我想创建一个助手 class 来帮助我将任何对象序列化为 json,反之亦然。我尝试 google 但没有任何相关内容。也许我不知道搜索的正确术语是什么。这是我到目前为止所做的工作..
public class Serializer {
private static Moshi moshi;
public Serializer(){
moshi = new Moshi.Builder().build();
}
public static <T> T parse(String json) throws IOException {
JsonAdapter<T> adapter = moshi.adapter(T);
// error at adapter(T): "Expression expected"
return adapter.fromJson(json);
}
@NonNull
public static <T> String stringify(T obj){
JsonAdapter<T> adapter = moshi.adapter(T);
// same error as the above
return adapter.toJson(obj);
}
}
如果我尝试做的事情没有用,我是否必须在我的每个 classes 上制作 toJson()
和 fromJson
?
您需要向 moshi.adapter()
方法提供一个 class 对象:
public final class Serializer {
private static Moshi moshi = new Moshi.Builder().build();
public static <T> T parse(String json, Class<T> objClass) throws IOException {
JsonAdapter<T> adapter = moshi.adapter(objClass);
return adapter.fromJson(json);
}
@NonNull
public static <T> String stringify(T obj, Class<T> objClass) {
JsonAdapter<T> adapter = moshi.adapter(objClass);
return adapter.toJson(obj);
}
}
我想创建一个助手 class 来帮助我将任何对象序列化为 json,反之亦然。我尝试 google 但没有任何相关内容。也许我不知道搜索的正确术语是什么。这是我到目前为止所做的工作..
public class Serializer {
private static Moshi moshi;
public Serializer(){
moshi = new Moshi.Builder().build();
}
public static <T> T parse(String json) throws IOException {
JsonAdapter<T> adapter = moshi.adapter(T);
// error at adapter(T): "Expression expected"
return adapter.fromJson(json);
}
@NonNull
public static <T> String stringify(T obj){
JsonAdapter<T> adapter = moshi.adapter(T);
// same error as the above
return adapter.toJson(obj);
}
}
如果我尝试做的事情没有用,我是否必须在我的每个 classes 上制作 toJson()
和 fromJson
?
您需要向 moshi.adapter()
方法提供一个 class 对象:
public final class Serializer {
private static Moshi moshi = new Moshi.Builder().build();
public static <T> T parse(String json, Class<T> objClass) throws IOException {
JsonAdapter<T> adapter = moshi.adapter(objClass);
return adapter.fromJson(json);
}
@NonNull
public static <T> String stringify(T obj, Class<T> objClass) {
JsonAdapter<T> adapter = moshi.adapter(objClass);
return adapter.toJson(obj);
}
}