相关疑难解决方法(0)

不能让杰克逊和龙目岛一起工作

我正在尝试结合杰克逊和龙目岛.这些是我的课程:

package testelombok;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Value;
import lombok.experimental.Wither;

@Value
@Wither
@AllArgsConstructor(onConstructor=@__(@JsonCreator))
public class TestFoo {
    @JsonProperty("xoom")
    private String x;
    private int z;
}
Run Code Online (Sandbox Code Playgroud)
package testelombok;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.xebia.jacksonlombok.JacksonLombokAnnotationIntrospector;
import java.io.IOException;

public class TestLombok {

    public static void main(String[] args) throws IOException {
        TestFoo tf = new TestFoo("a", 5);
        System.out.println(tf.withX("b"));
        ObjectMapper om = new ObjectMapper().setAnnotationIntrospector(new JacksonLombokAnnotationIntrospector());
        System.out.println(om.writeValueAsString(tf));
        TestFoo tf2 = om.readValue(om.writeValueAsString(tf), TestFoo.class);
        System.out.println(tf2);
    }

}
Run Code Online (Sandbox Code Playgroud)

这些是我在classpth中添加的JAR:

java netbeans jackson lombok

56
推荐指数
10
解决办法
4万
查看次数

杰克逊如何在没有制定者的情况下设置私有财产?

我非常好奇Jackson如何创建对象,包括它的私有属性/字段,没有setter,只使用对象空构造函数.

我问的原因是当我反序列化某些属性时,我想根据这些值自动设置其他属性.例如,我不想序列化图像,只是它的路径.一旦路径被反序列化,@JsonIgnore字段Image就可以加载实际图像.在反序列化对象的构造之后,尚未分配字段.从逻辑上讲,吸气剂没有被调用.那么伏都教魔法是什么触摸我的物体私处?

public class ItemTemplate {

    private String imagePath;

    public ItemTemplate() {
        System.out.println(imagePath); //Still null
    }

    public String getImagePath() {
        System.out.println(imagePath); //Not being called when deserializing.
        return imagePath;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当杰克逊完成对这个对象的反序列化时,它已经imagePath设置好了.

java json jackson

8
推荐指数
1
解决办法
7471
查看次数

标签 统计

jackson ×2

java ×2

json ×1

lombok ×1

netbeans ×1