如何使用JSON映射来自对象的属性

时间:2013-12-27 02:08:12

标签: java json annotations jackson playframework-2.2

我正在使用play freamwork编写一个Web应用程序, 我有以下课程:

public class Project{
   string name
   Image image
}

图像类

public class Image{
  String path;
  String na,e;
  int x;
  int y;
}

我想序列化Project,所以我在序列化时获取路径(不是整个图像对象):

即:

{ "name" : proj_name, "image" : "path" }

我认为这可以通过注释完成,但找不到正确的。

1 个答案:

答案 0 :(得分:0)

您必须编写自定义反序列化程序,它只将路径属性写入JSON:

class ImagePathJsonSerializer extends JsonSerializer<Image> {

    @Override
    public void serialize(Image image, JsonGenerator jsonGenerator,
            SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        jsonGenerator.writeString(image.path);
    }
}

现在,您可以使用@JsonSerialize注释:

class Project {
    private String name;

    @JsonSerialize(using = ImagePathJsonSerializer.class)
    private Image image;

    //getters, setters
}