嵌套 class 字段的 Jackson 自定义值
Jackson custom value for nested class's field
大家好,
我正在努力使用具有自定义名称的嵌套对象与@JsonProperty 序列化对象。
所以,这里是:
public class Wrapper {
public final Payload payload;
public Wrapper(String name){
this.payload = new Payload(name);
}
public static final class Payload{
@JsonProperty("customName")
public final String name;
@JsonCreator
public Payload(@JsonProperty ("customName") String name){
this.name = name;
}
}
}
因此,在每次测试中我都会看到非自定义名称 - “name”。我用@JsonProperty 添加了 getter 但没有成功。
我的测试class:
@JsonTest
public class SerializeWrapperTest {
@Test
void whenSerialiseThanCorrect() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
Wrapper wrapper =
new Wrapper("name");
String json = objectMapper.writeValueAsString(wrapper);
Assertions.assertEquals("{"payload":{"customName":"name"}}",json);
}
}
测试结果:
预期:{“有效载荷”:{“自定义名称”:“名称”}}
实际:{“有效载荷”:{“名称”:“名称”}}
org.opentest4j.AssertionFailedError.
已编辑。
如果我理解正确,您需要在 json 中为字段“名称”自定义 属性。
为此,您需要执行以下操作 -
public class Wrapper {
public final Payload payload;
public Wrapper(String name){
this.payload = new Payload(name);
}
public static final class Payload{
@JsonProperty("customName")
public final String name;
public Payload(String name){
this.name = name;
}
}
JUnit -
public class WrapperTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void whenSerialiseThanCorrect() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
Wrapper wrapper =
new Wrapper("Ajeet");
String json = objectMapper.writeValueAsString(wrapper);
System.out.println(json);
}
}
}
大家好, 我正在努力使用具有自定义名称的嵌套对象与@JsonProperty 序列化对象。 所以,这里是:
public class Wrapper {
public final Payload payload;
public Wrapper(String name){
this.payload = new Payload(name);
}
public static final class Payload{
@JsonProperty("customName")
public final String name;
@JsonCreator
public Payload(@JsonProperty ("customName") String name){
this.name = name;
}
}
}
因此,在每次测试中我都会看到非自定义名称 - “name”。我用@JsonProperty 添加了 getter 但没有成功。
我的测试class:
@JsonTest
public class SerializeWrapperTest {
@Test
void whenSerialiseThanCorrect() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
Wrapper wrapper =
new Wrapper("name");
String json = objectMapper.writeValueAsString(wrapper);
Assertions.assertEquals("{"payload":{"customName":"name"}}",json);
}
}
测试结果: 预期:{“有效载荷”:{“自定义名称”:“名称”}} 实际:{“有效载荷”:{“名称”:“名称”}}
org.opentest4j.AssertionFailedError.
已编辑。
如果我理解正确,您需要在 json 中为字段“名称”自定义 属性。 为此,您需要执行以下操作 -
public class Wrapper {
public final Payload payload;
public Wrapper(String name){
this.payload = new Payload(name);
}
public static final class Payload{
@JsonProperty("customName")
public final String name;
public Payload(String name){
this.name = name;
}
}
JUnit -
public class WrapperTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void whenSerialiseThanCorrect() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
Wrapper wrapper =
new Wrapper("Ajeet");
String json = objectMapper.writeValueAsString(wrapper);
System.out.println(json);
}
}
}