如何使用 gson 将 json 转换为接口类型,但仍有可能在 RoomDatabase 中使用其他 类
How to convert json using gson to interface type, but still have possibility to use other classes in RoomDatabase
我收到这个错误:
Unable to invoke no-args constructor for interface com.jimmy.common.ItemWrapper. Registering an InstanceCreator with Gson for this type may fix this problem.
我有一个 List<ItemWrapper>
,可能是 Dog
、Cat
或 Snake
class。我需要从 json 转换为 List<ItemWrapper>
,然后在其他 classes 中将 ItemWrapper
转换为 Dog
、Cat
或 Snake
我试图找到一些InstanceCreater的例子,但是什么也看不懂。
我的界面和ItemWrapperConverter
:
public interface ItemWrapper{
int getViewType();
int getId();
void setId(int id);
// делать их пустыми для всех кроме тех кому они нужны
void setName(String n);
void setDescription(String d);
void setColor(String c);
void changeNote(int i, String k, String p, long l);
void changeNote(String k, String p, long l);
void addNote(Note n);
void deleteNote(int i);
}
public class ItemWrapperConverter {
@TypeConverter
public String fromItemWrapper(List<ItemWrapper> itemWrappers) {
if (itemWrappers == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<ItemWrapper>>() {
}.getType();
String json = gson.toJson(itemWrappers, type);
return json;
}
@TypeConverter
public List<ItemWrapper> toItemWrapper(String ItemWrapperString) {
if (ItemWrapperString == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<ItemWrapper>>() {
}.getType();
List<ItemWrapper> itemWrappers = gson.fromJson(ItemWrapperString, type);
return itemWrappers;
}
}
我有一个 List<ItemWrapper>
,可能是 Dog
、Cat
或 Snake
class。我需要从 json 转换为 List<ItemWrapper>
,然后在其他 classes 中将 ItemWrapper
转换为 Dog
、Cat
或 Snake
我收到这个错误:
Unable to invoke no-args constructor for interface com.jimmy.common.ItemWrapper. Registering an InstanceCreator with Gson for this type may fix this problem.
我有一个 List<ItemWrapper>
,可能是 Dog
、Cat
或 Snake
class。我需要从 json 转换为 List<ItemWrapper>
,然后在其他 classes 中将 ItemWrapper
转换为 Dog
、Cat
或 Snake
我试图找到一些InstanceCreater的例子,但是什么也看不懂。
我的界面和ItemWrapperConverter
:
public interface ItemWrapper{
int getViewType();
int getId();
void setId(int id);
// делать их пустыми для всех кроме тех кому они нужны
void setName(String n);
void setDescription(String d);
void setColor(String c);
void changeNote(int i, String k, String p, long l);
void changeNote(String k, String p, long l);
void addNote(Note n);
void deleteNote(int i);
}
public class ItemWrapperConverter {
@TypeConverter
public String fromItemWrapper(List<ItemWrapper> itemWrappers) {
if (itemWrappers == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<ItemWrapper>>() {
}.getType();
String json = gson.toJson(itemWrappers, type);
return json;
}
@TypeConverter
public List<ItemWrapper> toItemWrapper(String ItemWrapperString) {
if (ItemWrapperString == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<ItemWrapper>>() {
}.getType();
List<ItemWrapper> itemWrappers = gson.fromJson(ItemWrapperString, type);
return itemWrappers;
}
}
我有一个 List<ItemWrapper>
,可能是 Dog
、Cat
或 Snake
class。我需要从 json 转换为 List<ItemWrapper>
,然后在其他 classes 中将 ItemWrapper
转换为 Dog
、Cat
或 Snake