【发布时间】:2021-07-21 21:32:56
【问题描述】:
我正在尝试使用 Jackson 解析 YAML 文件。请在下面找到相关文件。
Yaml 文件:
params:
- param-one : abcd
- param-two : abcd
- param-three : abcd
- param-four : abcd
型号:
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"params"
})
@Data
public class ParamsMain {
@JsonProperty("params")
private List<Params> params = null;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"param-one",
"param-two",
"param-three",
"param-four"
})
@Data
public static class Params {
@JsonProperty("param-one")
private String paramOne;
@JsonProperty("param-two")
private String paramTwo;
@JsonProperty("param-three")
private String paramThree;
@JsonProperty("param-four")
private String paramFour;
}
}
我正在尝试读取 yaml 内容如下:
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
ParamsMain paramsMain = objectMapper.readValue(<PATH_OF_YAML_FILE>, ParamsMain.class);
但是当我尝试打印解析后的数据时,我得到的是:
[{
param-one: abcd
param-two: null
param-three: null
param-four: null
},
{
param-one: null
param-two: abcd
param-three: null
param-four: null
},
{
param-one: null
param-two: null
param-three: abcd
param-four: null
},
{
param-one: null
param-two: null
param-three: null
param-four: abcd
}]
如何让它读取,以便我得到以下输出,而不是我收到的数组?
param-one: abcd
param-two: abcd
param-three: abcd
param-four: abcd
【问题讨论】:
-
请添加您用于输出的代码。输出甚至不是有效的 YAML,因此您似乎没有使用 YAML 库进行输出。显然,如果您不将输入结构转换为所需的输出结构,您将无法获得所需的输出。需要使用杰克逊吗?使用 SnakeYAML 的低级 API 解决这个问题会容易得多。
-
打印对象的代码:
System.out.println(ReflectionToStringBuilder.toString(paramsMain,ToStringStyle.MULTI_LINE_STYLE));