本帖最后由 猥琐的小王 于 2021-9-24 14:07 编辑
1.7.10 Uranium核心
这是我的代码
复制代码
然后是我的配置文件 config.yml
复制代码这是运行结果
为什么会错呢?
1.7.10 Uranium核心
这是我的代码
- package Main;
- import com.sun.istack.internal.NotNull;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.io.File;
- public class main extends JavaPlugin{
- @Override
- public void onEnable() {
- getLogger().info("测试插件成功加载!");
- saveDefaultConfig();
- FileConfiguration getconfig = getConfig();
- /*
- 这是一个读取配置文件的代码
- */
- String accountName = getconfig.getString("Test.Name");
- boolean Status = getconfig.getBoolean("Test.Name.enable");
- int account = getconfig.getInt("Test.Name.account", 0000);
- int password = getconfig.getInt("Test.Name.password", 0000);
- getLogger().info("账号: " + accountName + " 已经激活");
- getLogger().info("您的状态: " + Status);
- getLogger().info("您的账号: " + account);
- getLogger().info("您的密码: " + password);
- }
- }
然后是我的配置文件 config.yml
- Test:
- Name: '猥琐的小王'
- enable: true
- account: 2648488310
- password: 123456

为什么会错呢?
本帖最后由 Tidy_Bear 于 2021-9-24 11:17 编辑
一个 key 对应一个 value,我用 json 格式转换下你的 yaml,你应该就能知道了
{
"Test" : {
"Name": '猥琐的小王'
"enable:" true,
"account": 2648488310,
"password": 123456
}
}
Test.Name 你已经映射了字符串 '猥琐的小王',但后面又跟了一个 map 类型的 value,自然报错了
解决思路是,要么大家都是同级,即
复制代码相应地,java 代码里面的指定也要改下
或者
复制代码当然,我觉得第二种应该不是你想要的结果
一个 key 对应一个 value,我用 json 格式转换下你的 yaml,你应该就能知道了
{
"Test" : {
"Name": '猥琐的小王'
"enable:" true,
"account": 2648488310,
"password": 123456
}
}
Test.Name 你已经映射了字符串 '猥琐的小王',但后面又跟了一个 map 类型的 value,自然报错了
解决思路是,要么大家都是同级,即
- Test:
- name: '猥琐的小王'
- enable: true
- account: 2648488310
- password: 123456
或者
- Test:
- Name:
- name: '猥琐的小王'
- enable: true
- account: 2648488310
- password: 123456
Tidy_Bear 发表于 2021-9-24 11:12
一个 key 对应一个 value,我用 json 格式转换下你的 yaml,你应该就能知道了
{
"Test" : {
那么我想把Test:的子键Name:直接作为账户名称,我该怎么获取这个 Name: ?
比如我换成
Test:
xiaowang:
然后我想直接把xiaowang:作为一个账户名称,然后输出xiaowang
本帖最后由 Tidy_Bear 于 2021-9-24 12:29 编辑
map 必须根据 key 获取 value。如果这个 key 是未知的(开发过程当中我并不知道实际的账户是 xiaowang、xiaoli 还是 xiaoming),使用 map 意义不大,更推荐使用数组。
复制代码
复制代码
猥琐的小王 发表于 2021-9-24 11:47
那么我想把Test:的子键Name:直接作为账户名称,我该怎么获取这个 Name: ?
比如我换成
Test:
map 必须根据 key 获取 value。如果这个 key 是未知的(开发过程当中我并不知道实际的账户是 xiaowang、xiaoli 还是 xiaoming),使用 map 意义不大,更推荐使用数组。
- Test:
- -
- name: 'xiaowang'
- enable: true
- ...
- -
- name: 'xiaoming'
- enable: true
- ...
- List<Map<String, Object>> accounts = getConfig().getList("Test");
- for (acc in accounts) {
- String name = acc.get("name").toString();
- getLogger().info("账号:" + name);
- }