0
A
回答
2
只有通過爲POJO(VO)類實現自定義解串器,才能做到這一點。讓我們假設您的POJO類看起來是這樣的:現在
class Point {
private int x;
private int y;
//getters, setters, toString
}
,可以實現解串器。你可以這樣做:
class PointJsonDeserializer extends JsonDeserializer<Point> {
@Override
public Point deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
InnerPoint root = jp.readValueAs(InnerPoint.class);
Point point = new Point();
point.setX(root.x);
point.setY(root.y);
return point;
}
private static class InnerPoint {
public int x;
public int y;
}
}
之後,你必須告訴傑克遜使用上面的解串器。例如,以這樣的方式
@JsonDeserialize(using = PointJsonDeserializer.class)
class Point {
...
}
對於我來說,你的剎車setY
setter方法的責任。你應該避免使用setter方法隱藏類邏輯的情況。更好的解決方案是創建新的計算方法:
point.setX(10);
point.setY(11);
point.calculateSomething();
相關問題
- 1. 傑克遜反序列化
- 2. 傑克遜反序列化
- 3. java.util.Collection反序列化使用傑克遜
- 4. 傑克遜反序列化列表
- 5. 序列化/反序列化基於使用傑克遜
- 6. 傑克遜反序列化與泛型
- 7. 傑克遜反序列化問題
- 8. 反序列化xml 2 pojo傑克遜
- 9. 傑克遜:地圖反序列化
- 10. 傑克遜反序列化枚舉值
- 11. 反序列化日期,傑克遜
- 12. 傑克遜不反序列化
- 13. 傑克遜繼承和反序列化
- 14. 傑克遜JSON反序列化
- 15. 傑克遜JSON反序列化MongoDB ObjectId
- 16. 反序列化失敗與傑克遜
- 17. 反序列化與傑克遜
- 18. JSON反序列化與傑克遜
- 19. 多態反序列化傑克遜
- 20. 反序列化映射傑克遜
- 21. 傑克遜反序列化與子類
- 22. 傑克遜反序列化POJO
- 23. 傑克遜反序列化JsonIdentityReference(alwaysAsId =真)
- 24. 傑克遜設置值反序列化
- 25. 傑克遜反序列化成pojos
- 26. 傑克遜序列化Collections.unmodifiable *
- 27. 序列化和反序列化與傑克遜異常
- 28. 嘗試序列化時傑克遜反序列化異常
- 29. 傑克遜 - 序列化/反序列化屬性作爲JSON值
- 30. 的Java:FasterXML /傑克遜反序列化陣列,無按鍵
Ziober感謝您的迴應!如果設置x應該修改x的值會怎樣? – Neel
我不明白你的問題。你能否給我更多的細節? –
Ziober:對不起,這是一個拼寫錯誤 - 我的意思是:「如果設置'y'應該修改'x'的值呢?在這種情況下,calculateSomething會在'set'中被調用,因爲代碼應該是緊密耦合 – Neel