为什么我在解析 YAML 块时会出现此错误?
Why I have this error on parsing Block of YAML?
我有这个 YAML 块:
- operationId: "getG"
applicationName: "c"
- operationId: "get"
applicationName: "c"
实际上我想用 YAML 的 Jackson 库解析它,我有这段代码:
public class YamlProcessor {
ListYamlEntries> entries;
}
@Getter //lombok
@Setter //lombok
public class YamlEntries {
@JsonProperty("applicationName")
String applicationName;
@JsonProperty("operationId")
String operationId;
}
public YamlProcessor yamlParser(String file) throws IOException {
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
objectMapper.findAndRegisterModules();
YamlProcessor yamlEntries = objectMapper.readValue(new File(file), YamlProcessor.class);
yamlEntries.getEntries().forEach(valuesOfYaml -> {
log.info("applicationName: " + valuesOfYaml.getApplicationName());
log.info("operationId: " + valuesOfYaml.getOperationId());
});
return yamlEntries;
}
但我收到此错误,我无法弄清楚原因:
Cannot deserialize instance of `[....objects.YamlEntries;` out of START_OBJECT token
at [Source: (File); line: 10, column: 1]
谁能帮我解决一下?
我不知道你到底想解析什么,但你发布的yaml应该在一个
List<YamlEntries>
而不是 List<Map<String, YamlEntries>>
如果你想创建一个地图列表,你的 yaml 应该是这样的:
- key1:
operationId: "getG"
applicationName: "c"
key2:
operationId: "getG"
applicationName: "c"
- otherkey1:
operationId: "get"
applicationName: "c"
otherkey2:
operationId: "getG"
applicationName: "c"
如果你想解析 List<YamlEntries>
这应该适合你。
在 yaml 中你必须有类似
的东西
entries:
- operationId: "getG"
applicationName: "c"
- operationId: "get"
applicationName: "c"
然后像这样 class 将属性映射到 YamlEntries 列表中:
@Component
@ConfigurationProperties(prefix = "entries")
public class Endpoints {
private List<YamlEntries> yamlEntries;
}
我有这个 YAML 块:
- operationId: "getG"
applicationName: "c"
- operationId: "get"
applicationName: "c"
实际上我想用 YAML 的 Jackson 库解析它,我有这段代码:
public class YamlProcessor {
ListYamlEntries> entries;
}
@Getter //lombok
@Setter //lombok
public class YamlEntries {
@JsonProperty("applicationName")
String applicationName;
@JsonProperty("operationId")
String operationId;
}
public YamlProcessor yamlParser(String file) throws IOException {
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
objectMapper.findAndRegisterModules();
YamlProcessor yamlEntries = objectMapper.readValue(new File(file), YamlProcessor.class);
yamlEntries.getEntries().forEach(valuesOfYaml -> {
log.info("applicationName: " + valuesOfYaml.getApplicationName());
log.info("operationId: " + valuesOfYaml.getOperationId());
});
return yamlEntries;
}
但我收到此错误,我无法弄清楚原因:
Cannot deserialize instance of `[....objects.YamlEntries;` out of START_OBJECT token
at [Source: (File); line: 10, column: 1]
谁能帮我解决一下?
我不知道你到底想解析什么,但你发布的yaml应该在一个
List<YamlEntries>
而不是 List<Map<String, YamlEntries>>
如果你想创建一个地图列表,你的 yaml 应该是这样的:
- key1:
operationId: "getG"
applicationName: "c"
key2:
operationId: "getG"
applicationName: "c"
- otherkey1:
operationId: "get"
applicationName: "c"
otherkey2:
operationId: "getG"
applicationName: "c"
如果你想解析 List<YamlEntries>
这应该适合你。
在 yaml 中你必须有类似
的东西entries:
- operationId: "getG"
applicationName: "c"
- operationId: "get"
applicationName: "c"
然后像这样 class 将属性映射到 YamlEntries 列表中:
@Component
@ConfigurationProperties(prefix = "entries")
public class Endpoints {
private List<YamlEntries> yamlEntries;
}