我对使用Jackson还是个新手,我正在尝试遵循我的团队的模式来反序列化我们的JSON。现在我遇到了一个问题,当一个字段名与JSON属性不匹配时。
工作示例:
@JsonDeserialize(builder = ProfilePrimaryData.Builder.class)
@Value
@ParametersAreNonnullByDefault
@Builder(builderClassName = "Builder")
private static class ProfilePrimaryData {
private final Boolean hasProfile;
@JsonPOJOBuilder(withPrefix = "")
public static class Builder {
}
}
如果JSON属性是hasProfile,它工作得很好,但是如果是has_profile(这是我们的客户端正在编写的内容),它就不工作了,并且我得到一个错误:无法识别的字段“has_profile”(类com.mypackagehere.something.$profilePrimaryData$builder),没有标记为可忽略(一个已知属性:“hasProfile”])
。我尝试向hasProfile添加JsonProperty注释,但仍然不起作用:
@JsonDeserialize(builder = ProfilePrimaryData.Builder.class)
@Value
@ParametersAreNonnullByDefault
@Builder(builderClassName = "Builder")
private static class ProfilePrimaryData {
@JsonProperty("has_profile")
private final Boolean hasProfile;
@JsonPOJOBuilder(withPrefix = "")
public static class Builder {
}
}
我是不是误会了这是怎么回事?
错误明确指出无法识别的字段“has_profile”(类com.mypackagehere.something.$profilePrimaryData$Builder
)
即Builder
类中缺少has_profile
,而不是profilePrimaryData
类,因此必须注释生成器类属性。
@JsonDeserialize(builder = ProfilePrimaryData.Builder.class)
public class ProfilePrimaryData {
/*
* This annotation only needed, if you want to
* serialize this field as has_profile,
*
* <pre>
* with annotation
* {"has_profile":true}
*
* without annotation
* {"hasProfile":true}
* <pre>
*
*/
//@JsonProperty("has_profile")
private final Boolean hasProfile;
private ProfilePrimaryData(Boolean hasProfile) {
this.hasProfile = hasProfile;
}
public Boolean getHasProfile() {
return hasProfile;
}
@JsonPOJOBuilder(withPrefix = "")
public static class Builder {
// this annotation is required
@JsonProperty("has_profile")
private Boolean hasProfile;
public Builder hasProfile(Boolean hasProfile) {
this.hasProfile = hasProfile;
return this;
}
public ProfilePrimaryData build() {
return new ProfilePrimaryData(hasProfile);
}
}
}
我正在探索GraphQL,想知道是否有任何重命名响应字段的方法,例如我有一个POJO与这些字段 GraphQL查询: 我的回答是这样的 我是否可以将名称字段重命名为类似用户名的名称,以便我的回答如下
我想在更深层次的继承中为一个类实现构建器模式,其中一些字段是强制性的(message,case),而一些字段是可选的(myOptField1,MyOptField2…)通过使用Lombok@Builder并假设父类不能更改。因此,我实现了自己的builder(),如下所示: 那么这个类的使用方式可以是: 在IntelliJ的想法中,一切似乎都很好,但我得到了编译错误: 因此编译器只能看到由Lomb
我有两个名为Site和AppSite的对象,两个对象都有如下相同的字段。是否有任何util类将所有字段从AppSite复制到站点,如BeanUtils。copyProperties。 如果你看到上面的两个pojo,我有两个对象字段列表。两个对象也一样,只有Site和AmsSite对象。有相同的字段名,但不同的类名。 BeanUtils.copy属性是将所有文字字段值从AppSite正确复制到Sit
Java类(用作数据传输对象): 类资源还有一个名为的字段,它的getter和setter具有不同的类型,因此出现语法错误。 由于上面的类是一个DTO,一个JSON响应(带有字段)将映射到它,并且不能使用getId(),我想将字段更改为,并相应地更改getter和setter,并用一个注释标记它,说明bind this to字段。 注意:我用的是Spring靴。我尝试使用@JSONProperty
问题内容: 我在Google Cloud Firestore中的查询条件有问题。 下面是我的代码,以获得第一个以HA_开头的文档并按ID DESC排序 我想获取文章ID为“ HA_”或“ XE_”开头的文章的最后ID 例如上图: if(articleId以“ HA_”开头)=>返回id 831的对象 if(articleId以“ XE_”开头)=>返回ID为833的对象 现在我得到一个错误 jav
我将游戏状态存储在MongoDB数据库中,并使用Spring数据来管理数据库交互。我是Spring Data的新手,不确定如何处理下面的场景。 我有一个“游戏”类型的文档,带有一堆属性,如id,时间戳等。这些属性之一是用户采取的操作列表。这些行动的形式如下: