@JsonRawValueを使用して、エスケープされたJSON文字列を含む属性ではなく、JSONとしてクラスメンバーをマーシャリングする、非常に基本的な例を次に示します。あなたのシナリオに当てはまるかどうかは分かりませんが、助けてくれるといいでしょう
package com.spring.jackson.rawjson;
import static org.junit.Assert.assertEquals;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRawValue;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
public class RawJsonTest {
public static class PojoWithRawJsonMember {
private final String member1;
private final String member2;
private final String rawJsonMember1;
public PojoWithRawJsonMember(String member1, String member2, String rawJsonMember1) {
this.member1 = member1;
this.member2 = member2;
this.rawJsonMember1 = rawJsonMember1;
}
@JsonProperty("member1")
public String getMember1() {
return member1;
}
@JsonProperty("member2")
public String getMember2() {
return member2;
}
@JsonRawValue
public String getRawJsonMember1() {
return rawJsonMember1;
}
}
@Test
public void jsonRaw_shouldMarshalRawJson() throws Exception {
ObjectMapper mapper = new ObjectMapper();
PojoWithRawJsonMember thingToMarshal = new PojoWithRawJsonMember("value1", "value2", "{\"key\":\"value\"}");
String marshalled = mapper.writeValueAsString(thingToMarshal);
assertEquals("{\"rawJsonMember1\":{\"key\":\"value\"},\"member1\":\"value1\",\"member2\":\"value2\"}",
marshalled);
}
}
@JsonRawValueは、シリアル化するときに機能します。 JavaDocsからの私の理解では、逆シリアル化には適用されません。
@ JsonRawValueを試しましたか? –