我试图找到一个例子,但无法解释如何将javafx.scene.paint.Color JSON重新组合成POJO。
当我创建JSON时,Color.RED变为:
{
"annotationText" : "5/5/2015 12:18 PM",
"pageNumber" : 0,
"textColor" : {
"red" : 1.0,
"green" : 0.0,
"blue" : 0.0,
"opacity" : 1.0,
"opaque" : true,
"brightness" : 1.0,
"hue" : 0.0,
"saturation" : 1.0
},
"fillColor" : null
}
我不知道如何解析它,以便它将Color.RED放回我的POJO上的textColor字段。
任何指针都会受到赞赏。
谢谢!
答案 0 :(得分:0)
基于上面的评论 - 我能够让它像这样工作:
public class AnnotationDeserializer extends JsonDeserializer<AnnotationDetail>{
@Override
public AnnotationDetail deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
AnnotationDetail detail = new AnnotationDetail();
JsonNode node = jp.getCodec().readTree(jp);
detail.setAnnotationText(node.get("annotationText").asText());
detail.setPageNumber((Integer) ((IntNode) node.get("pageNumber")).numberValue());
JsonNode textColorNode = node.get("textColor");
double red =(Double) ((DoubleNode) textColorNode.get("red")).numberValue();
double green = (Double) ((DoubleNode) textColorNode.get("green")).numberValue();
double blue = (Double) ((DoubleNode) textColorNode.get("blue")).numberValue();
double opacity = (Double) ((DoubleNode) textColorNode.get("opacity")).numberValue();
detail.setTextColor(new Color(red, green, blue, opacity));
return detail;
}
}