java - JsonDeserialize 构建结果到 json
问题描述
我有以下代码
AttackPattern attackPattern1 = AttackPattern.builder()
.name("Spear Phishing")
.description("tack desc")
.build();
AttackPattern 类是:
@JsonDeserialize(builder = AttackPattern.Builder.class)
@JsonTypeName("attack-pattern")
public class AttackPattern {
public static Builder builder() {
return new Builder();
}
private String type;
private String id;
private StixInstant createdByRef;
private StixInstant created;
private StixInstant modified;
private String labels;
private Set<ExternalReference> external_references;
private String name;
private String description;
private Set<KillChainPhaseType> killChainPhases;
private AttackPattern(String name , String description , Set<KillChainPhaseType> killChainPhases) {
this.name = name;
this.description = description;
this.killChainPhases = killChainPhases;
}
@JsonPOJOBuilder(withPrefix = "set")
public static class Builder
{
String name;
String description;
Set<KillChainPhaseType> killChainPhases;
public Builder name(String name) {
this.name = name;
return this;
}
public Builder description(String description) {
this.description = description;
return this;
}
@JsonProperty("kill_chain_phases")
public Builder killChainPhases(Set<KillChainPhaseType> killChainPhases) {
this.killChainPhases = killChainPhases;
return this;
}
public AttackPattern build() {
return new AttackPattern(name,description,killChainPhases);
}
}
public String toJsonString() {
try {
ObjectMapper mapper = new ObjectMapper();
String user_s= mapper.writeValueAsString(this);
ObjectNode json = (ObjectNode) mapper.readTree(user_s);
return json.toString();
} catch (IOException e) {
throw new IllegalStateException("Cannot process JSON", e);
}
}
public String toString() {
return "AttackPattern [name=" + name + ", description=" + description + ", killChainPhases=" + killChainPhases
+ "]";
}
}
但是当我想将结果转换为 json
attackPattern1.toJsonString()
结果是空的。我不知道如何解决它。
在下面的行中它清空它
String jsattack= mapper.writeValueAsString(this);
“这个”的价值是
AttackPattern [name=Spear Phishing, description=tack desc, killChainPhases=null]
我究竟做错了什么?
提前谢谢你安娜
解决方案
为类字段添加getter
方法。AttackPattern
然后它应该工作。
推荐阅读
- python - NumPy 中矩阵的 2-Norm 计算速度
- laravel - 如何修复 CKeditor 在 laravel 项目中没有上传图片功能
- javascript - 使用扩展运算符处理嵌套数组内容
- python - 仅当 doc 不存在时 Elasticsearch 中的批量索引
- java - 向eclipse服务器发送数据时,如何一次发送多个信标的数据?
- javascript - 如何在 Wordpress 上嵌入 Shoppy 按钮
- python - 使用 bs4 抓取数据时返回 []
- c++ - 在 C++ 中写入文件而不是使用“<<”的替代方法?
- r - 如何在ggplot2中将列名设置为直方图标题
- mysql - 错误代码:1055。ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列