【发布时间】:2016-01-31 12:04:15
【问题描述】:
这是我的enum:
public enum StaffRanks {
HELPER("helpers"),
MODERATOR("moderators"),
ADMINISTRATOR("administrators"),
DEVELOPER("developers"),
OWNER("owners");
private String name;
StaffRanks(String name) {
this.setName(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这就是我创建Multimap 的方式:
public static Multimap<String, StaffRanks> staffMembers;
public static void fetchPlayerRanks() {
JsonParser parser = new JsonParser();
try {
Object obj = parser.parse(new FileReader(".\\Data\\staff_list.json"));
JsonObject staffList = (JsonObject) obj;
Type listType = new TypeToken<List<String>>() {
}.getType();
staffMembers = ArrayListMultimap.create();
for (StaffRanks rank : StaffRanks.values()) {
staffMembers.put(new Gson().fromJson(staffList.get(rank.getName()), listType), rank);
}
} catch (Exception e) {
e.printStackTrace();
}
}
这就是我想使用它的方式:
int index = 39550;
for (String player : allStaffNames) {
onlineStatus = "@red@Offline";
if (onlineStaff.contains(PlayerHandler.getPlayer(player))) {
onlineStatus = "@gre@Online";
}
if (staffMembers.containsKey(player)) {
playerClient.getPA().sendFrame126("[" + staffMembers.get(player).getName() + "]@cya@" + Misc.formatPlayerName(player) + ": ", index);
}
playerClient.getPA().sendFrame126(onlineStatus, index - 1);
index += 2;
}
现在,问题是:如何从Multimap 中的枚举中获取名称?
这是我尝试过的。但是,它没有用。
staffMembers.get(player).getName()
Staff_list.json 文件如下所示:
{
"owners":['chuck'],
"developers":['tyrant','stan'],
"serverManagers":['logical'],
"staffManagers":['bench press', 'bench press2'],
"communityManagers":['cleave'],
"administrators":['zeven', 'reavers', 'redaeran', 'stuart'],
"moderators":['searwen', 'potentials', 'maud', 'lickylicky'],
"helpers":['megafun12', 'rhysj', 'vaping', 'punch']
}
【问题讨论】:
-
staff_list.json条目的外观如何?player字符串文字是什么样的?这应该是诀窍...... -
@tmarwen 添加了 json 文件,谢谢 :)
-
您能否进一步说明您的示例中哪些部分不起作用?抛出的错误是什么以及在哪一部分?我几乎看不到它甚至可以编译。
标签: java json enums guava multimap