qba*_*ait 2 android android-room android-architecture-components android-jetpack
您将如何编写Map的TypeConverter?我的方法是由Moshi来做
class Converters() {
val moshi = Moshi
.Builder()
.add(KotlinJsonAdapterFactory())
.build()
val mapOfStringsType = Types.newParameterizedType(Map::class.java, String::class.java, String::class.java)
val mapOfStringsAdapter = moshi.adapter<Map<String, String>>(mapOfStringsType)
@TypeConverter
fun stringToMap(data: String): Map<String, String> {
return mapOfStringsAdapter.fromJson(data).orEmpty()
}
@TypeConverter
fun mapToString(map: Map<String, String>): String {
return mapOfStringsAdapter.toJson(map)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它闻起来是因为我无法通过Converters()构造函数注入Moshi 。而且,恐怕也不是最好的表现。
我通常将gson用作Room TypeConverters。它允许适用于所有对象类型的简单实现:
public class StringMapConverter {
@TypeConverter
public static Map<String, String> fromString(String value) {
Type mapType = new TypeToken<Map<String, String>>() {
}.getType();
return new Gson().fromJson(value, mapType);
}
@TypeConverter
public static String fromStringMap(Map<String, String> map) {
Gson gson = new Gson();
return gson.toJson(map);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |