杰克逊v1。9.13 spring 3.2.0嗨,我花了好几天的时间试图弄清楚如何在序列化期间从bean向JSON中添加字段。
这似乎是一个非常基本的功能,但我每走一条路都会碰到橡胶墙。
我想要实现的是:
示例bean:
package org.mydomain;
public class MyBean implements Serializable {
private String foo;
public void setFoo( String inValue ) {
foo = inValue;
}
public String getFoo() {
return foo;
}
}
输出:
{
"_type" : "org.mydomain.MyBean",
"foo" : "bar"
}
我认为最简单的方法是扩展BeanSerializer,编写“_type”属性,并委托剩余字段的超类序列化。问题是,方法的可访问性和一些关键方法的“最终”条款使其陷入困境。
我试着扩展BeanSerializerBase、JsonSerializer、BeanSerializerModifier。
每次我撞上一些难以理解的24参数构造函数或一些非/错误记录的方法。
非常令人沮丧。
有人知道如何实现上述目标吗?
我使用sping-mvc,因此我需要通过ObjectMapper配置的可插拔解决方案。我不想用json特定的注释或序列化逻辑污染我的模型或控制器对象。
多谢了。
N
您可以为MyBean创建一个代理类,并使用它来代替MyBean。这不需要改变原来的类。您只需要用代理对象替换原始的MyBean
对象。虽然你可以在不需要MyBean
接口的情况下使用,但是使用接口更干净。
package org.mydomain;
public interface IMyBean{
public String getFoo();
}
public class MyBean implements IMyBean,Serializable {
private String foo;
public void setFoo( String inValue ) {
foo = inValue;
}
public String getFoo() {
return foo;
}
}
public class MyBeanProxy implements IMyBean,Serializable {
private IMyBean myBean;
private String type;
public MyBeanProxy(IMyBean myBean, String type){
this.myBean = myBean;
this.type = type;
}
public String getFoo() {
return myBean.getFoo();
}
public String getType(){
return type;
}
}
问题内容: 我有以下课程- 我正在使用objectMapper.valueToTree(sections)将其转换为JsonNode。但是,当我打印相同的内容时,我仅从Entity类中看到id和name字段,而从Images列表中看不到任何内容。我是否需要添加任何种类的特殊逻辑或注释以确保同时打印列表。 以下是主要课程- 问题答案: 您需要为Entity#images添加getter和setter
我对jackson进行了配置,以便在和时给出一个简单的字符串表示。这可以在序列化过程中找到,例如,当我在REST API上获得数据时。 但反过来就不行了。当我试图将数据发送到服务器,并且应该将JSON解析为java对象时,会引发此异常: 很抱歉没有提到我在单元测试中。 TestClass:
有没有办法让Jackson序列化某个流对象(并在之后关闭)?这样地: 使现代化 澄清:我想流式传输内容,而不仅仅是将其序列化到单个String对象。
问题内容: 我需要设置班级日期序列化的格式。我有Jackson的版本,没有@JsonFormat。这就是为什么我编写自定义类的原因: } 并使用它: 但是,我还有另一个具有不同日期格式的字段,并且我不想创建用于序列化的其他类。我可以将所有需要的格式(例如常量)添加到CDJsonDateSerializer类中,并通过注释设置所需的格式吗?像这样: 。 下面的答案后: 经过一些更正后,它可以工作。我
我正在构建一个REST网络服务。某些类的属性类型为(JodaTime)。 将此对象发送给我的客户端(Javascript)时,我的对象 被转化为 问题是我把这个对象发回服务器时出错了,因为我无法实例化 我想有像-任何其他格式都可以。 环境 杰克逊-注释2.8.8 jackson-core 2.8.8 杰克逊-数据库2.8.8 jackson-datatype-joda 2.8.8 joda-tim
Java Jackson能否将一个json字符串date反序列化成Java Long字段(从epoch开始的毫秒数)? 这是一个要反序列化的json字段的示例: 这是Java类中的同一字段,带有当前注释: 但是,发生异常: com . faster XML . Jackson . databind . exc . invalidformatexception:无法从字符串“2022-01-02T0