Я хочу получить ArrayList из String, содержащего: `
[
{
"name": "*",
"package": "permission",
"id": "permission.*"
},
{
"name": "*",
"package": "info",
"id": "info.*"
},
{
"name": "help",
"package": "info",
"id": "info.help"
},
{
"name": "ping",
"package": "info",
"id": "info.ping"
},
{
"name": "premium",
"package": "info",
"id": "info.premium"
}
]
Однако каждый раз я получаю исключение JsonSyntaxException. Мой Permission.class выглядит так:
public enum Permission {
ALL("permission", "*"),
INFO("info", "*"),
INFO_HELP("info", "help"),
INFO_PING("info", "ping"),
INFO_PREMIUM("info", "premium"),
;
@SerializedName("permPack")
public final String permPack;
@SerializedName("permName")
public final String permName;
@SerializedName("permId")
public final String id;
Permission(String permPack, String name) {
this.permPack = permPack;
this.permName = name;
this.id = permPack + "." + name;
}
public String getId() {
return id;
}
public String getName() {
return permName;
}
public String getPermPack() {
return permPack;
}
public static Permission getById(String Id) {
List<Permission> perms = Arrays.asList(Permission.values());
for (int i = 0; i < perms.size(); i++) {
if (perms.get(i).getId().equals(Id)){
return perms.get(i);
}
}
return null;
}
}
Я попытался десериализовать строку, используя:
Type listType = new TypeToken<ArrayList<Permission>>(){}.getType();
ArrayList<Permission> availablePermsList = gson.fromJson(permissionString, listType);
Я также попытался добавить имя к этой строке или написать собственный десериализатор, используя Permission.getById, ничего не работает. У меня нет идей.