gpt4 book ai didi

java - 如何使用房间实体(使用类型转换器)解析Gson

转载 作者:行者123 更新时间:2023-12-02 02:31:14 24 4
gpt4 key购买 nike

我有一个实体:

@Entity
public class User {
@PrimaryKey
private int uId;
private String uName;
private ArrayList<String> uPets = new ArrayList<>();

public User() {}

public User(int id, String name, List<String> pets){
this.uId = id;
this.uName = name;
this.uPets.addAll(pets);
};

//getters setters removed for brevity
}

类型转换器是:

public class Converters {
@TypeConverter
public static ArrayList<String> fromString(String value) {
Type listType = new TypeToken<ArrayList<String>>() {}.getType();
return new Gson().fromJson(value, listType);
}

@TypeConverter
public static String fromArrayLisr(ArrayList<String> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
}

数据库类包含一行讲述类型转换器的信息:

@Database (entities = {User.class},version = 1)
@TypeConverters({Converters.class})
public abstract class UserDB extends RoomDatabase {
public abstract UserDAO userDAO();
}

因此,上述代码在将数据存储到数据库表方面一切正常。但是,我现在想将一些表示用户数据的 JSON 数据解析为 User 类。 Json 格式如下:

{ "uId": "123", 
"uName": "John Doe",
"uPets": [ "cat", "dog", "fish", "pizza"]
}

当我尝试使用 Gson 解析上述 Json 数据时,出现错误 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at path $.users[0] .uPets

我尝试向我的 GsonBuilder 添加类型适配器,例如:

builder.registerTypeAdapter(ArrayList.class, new Converters())

但这也给了我一个错误:

java.lang.IllegalArgumentException
at com.google.gson.internal.$Gson$Preconditions.checkArgument($Gson$Preconditions.java:46)
at com.google.gson.GsonBuilder.registerTypeAdapter(GsonBuilder.java:497)
...

感谢任何帮助,提前致谢

最佳答案

你的问题是在你的 uPets arrayList 中使用了 ' :

将“披萨”中的“更改为”

“披萨”-->“披萨”

关于java - 如何使用房间实体(使用类型转换器)解析Gson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57229172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com