1
在Java中使用的傑克遜JSON庫,是有可能做到以下幾點:rawJson的Java jackson如何在序列化期間打開原始值?
public class MyObject {
@JsonRawValue
@JsonUnwrapped
private String rawJson;
}
public class DTO {
public MyObject json;
}
例子:
{
"key": "value"
}
當DTO是序列化,並呈現爲JSON的,我想JSON來只是看起來像:
{
"dto": {
"key":"value"
}
}
相反,它總是:
{
"dto":{
"rawJson":{
"key":"value"
}
}
}
基本上看來,當你的屬性之一是存儲在與@JsonRawValue一個字符串值JSON,@JsonUnwrapped不起作用。
理想情況下,我正在尋找在MyObject類而不是DTO級別的序列化解決方案,否則我不得不將解決方案應用於DTO,而是應用到其中引用MyObject的每個其他DTO。
更新:
下面的答案在一個地方解決了這個問題,但仍然是在以下情況下的問題;
public class DTO2 {
@JsonUnwrapped
public MyObjectAbstract json2;
}
哪裏myObject的是MyObjectAbstract的延伸,而當DTO2 MyObjectAbstract是爲MyObject的實例,我想DTO2簡單序列化爲:
{
"key": "value"
}
的問題是,每當DTO2.MyObjectAbstract正在爲MyObject的實例,它的序列化,如:
{
"json": {
"key": "value"
}
}
這解決了我的問題,在一個情況下我最終還是想{ 「JSON」:{ 「關鍵」: 「值」}},但什麼如果我有另一個引用對象DTO2,我想簡單地序列化爲{「key」:「value」}。我已經用細節更新了這個問題。 –
通過類比,你可以添加一個帶有JsonValue註解的getter到DTO2類。 –
是否有任何解決方案不需要對引用此對象的類進行任何更改?我擔心的是,將來這個類可能會在很多地方被引用,因此不管它在哪裏引用,都不需要定製序列化邏輯。 –