大家好,我想在将Pojo序列化为json时删除属性名。我有以下课程
public class Field {
private List<SubFieldItems> subFieldItems;
public List<SubFieldItems> getSubFieldItems() {
return subFieldItems;
}
public void setSubFieldItems(List<SubFieldItems> subFieldItems) {
this.subFieldItems = subFieldItems;
}
}
SubFieldItems类:
public class SubFieldItems {
@JsonPropertyOrder
private String name;
private List<String> items;
public SubFieldItems(String name, List<String> items) {
this.name = name;
this.items = items;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getItems() {
return items;
}
public void setItems(List<String> items) {
this.items = items;
}
//tried doing this
/* @JsonValue
@Override
public String toString() {
return "{" +
" \"name\":" + "\"" + name + "\"" +
",\" items\":" + items +
'}';
}*/
}
当我序列化时,json输出是
{
"field": {
"subFieldItems": [
{
"name": "brands",
" items": []
}
]
}
}
但我希望子字段的值不带属性名,如下所示:
{
"field": {
[
{
"name": "brands",
" items": []
}
]
}
}
我可以使用什么Jackson注释,我已经尝试过在toString方法中使用@JsonValue来强制执行,就像在评论中一样,但是我一直得到奇怪的结果。请提供任何帮助,谢谢。谢谢
你想要的JSON是无效的,也许这就是你想要的:
{
"field": [
{
"name": "brands",
"items": []
}
]
}
(请注意,我删除了<code>“字段:</code>之后的大括号,以及与其匹配的右大括号)。
在这种情况下,您可能会发现@JsonValue
注释很有用:
< code > @ JSON value :per-property标记,指示POJO应该使用属性值进行序列化,通常是java.lang.String(类似于annotation toString()方法)。
试试这个:
public class Field {
private List<SubFieldItems> subFieldItems;
@JsonValue
public List<SubFieldItems> getSubFieldItems() {
return subFieldItems;
}
public void setSubFieldItems(List<SubFieldItems> subFieldItems) {
this.subFieldItems = subFieldItems;
}
}
假设我们有以下JSON, 在Java类中,我们有与上述JSON匹配的所有字段。 每次要反序列化的字段列表取决于发送信息的客户。 例如,对于customer 1,我们只想读回以下值,(并且跳过其他属性,即使在JSON中提供) 例如,对于客户2,我们希望读取以下值(并跳过其他属性,即使在JSON中提供) 使用Jackson反序列化JSON时,是否可以提供上面的数组,其中包括需要反序列化的字段, 更新:
下面是输出: 我的分级文件中的版本号:
问题内容: 我要呼吁汇率第三方API,但JSON返回不断变化,如果我申请到的转换,它将返回我:,所以如果我的要求来,它将返回我。 我将不得不使用将返回的结果映射到pojo中,是否有任何可行的方法? 我当前的硬编码解决方法: 问题答案: 是具有值的字段的对象。 否是with键/值对。 两者都是正确的,但是由于before的值是动态的(变化的),因此它是您需要的第二种解释。 因此,请勿要求将JSON转
我已经通过应用程序配置了我的兔子属性。yaml和spring配置属性。因此,在配置交换、队列和绑定时,可以使用属性的getter 然而,当我配置@RabbitListener从队列登录消息时,我必须使用完整的属性名称,如 我希望避免这种容易出错的硬编码字符串,并参考configurationProperties bean,如: 我曾经遇到过一个与@EventListener类似的问题,在这里使用b
问题内容: 我有多态类型,并且可以从JSON反序列化为POJO。实际上,我遵循这里的文档。将POJO序列化为JSON时,我得到了不需要的属性,特别是逻辑类型名称。 当Jackson序列化为JSON时,它提供了我不想公开的类型信息。 我可以以某种方式防止这种情况吗?反序列化时我只想忽略。 问题答案: 一个简单的解决方案是将和配置移至,然后仅注册进行反序列化。
问题内容: 我使用不同的数据库,并且根据数据库,我需要将“ id”命名为不同的名称。因此,例如在id中被命名为“ @rid” 对于MongoDB,该ID名为“ _id” 我不知道现代数据库开发人员有什么问题,不仅仅是命名id字段“ id” ^^。但是现在我有一个问题。在某些情况下,如何将ID字段动态序列化/反序列化为“ @rid”,在另一种情况下,如何动态序列化/反序列化为“ _id”? 编辑: