当前位置: 首页 > 知识库问答 >
问题:

嵌套类字段的jackson自定义值

松锐藻
2023-03-14

大家好,我正在用@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,但没有成功。

我的测试类:

@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);
    }
}

测试结果:预期:{“Payload”:{“CustomName”:“Name”}}实际:{“Payload”:{“Name”:“Name”}}

org.opentest4j.AssertionFailedError。

编辑过。

共有1个答案

汪翰墨
2023-03-14

如果我理解正确的话,您需要在json中为字段“name”设置一个自定义属性。为此你要做的是-

     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);
    }
}
}
 类似资料:
  • 有没有一种方法可以使用Jackson JSON处理器来执行自定义字段级别的序列化?例如,我想让 注意,age=25被编码为数字,而favoritenumber=123被编码为字符串。Jackson将编组为一个数字。在这种情况下,我希望将favoriteNumber编码为字符串。

  • 我有以下xml 我需要将其反序列化为以下POJO: 这里的问题是被包装在元素中

  • 我需要一些使用MapStruct映射嵌套POJO的帮助。我需要跳过/删除目标类中所有子类的特定字段。 例如,以下是我的目标POJO 所有这些子类——,,。。。包含一个字段“”,我想在映射时忽略它。这种结构使得这些类不共享包含此字段的公共基类——“”。 我创建的映射器如下所示: 这工作。 然而,当中的子类数量很大时,它会变得很乏味。我需要明确指定每个类。 有没有人能告诉我,这是否可以用一种更通用的方

  • 问题内容: 有没有一种使用Jackson JSON Processor进行自定义字段级序列化的方法?例如,我想上课 序列化为以下JSON: 请注意,age = 25被编码为 数字, 而favoriteNumber = 123被编码为 string 。开箱即用的杰克逊将集结到一个号码。在这种情况下,我希望将favoriteNumber编码为字符串。 问题答案: 您可以实现自定义序列化器,如下所示:

  • 介绍 model 参考文档已经介绍了如何使用 Django 的标准字段类;例如 CharField, DateField,等等。对于很多应用来说,这些类足够用了。 但是在某些情况下, 你所用的Django 不具备你需要的某些精巧功能,或是你想使用的字段与 Django 自带字段完全不同。 Django 内置的字段类型并不能覆盖所有可能遇到的数据库的列类型,仅仅是些普通的字段类型,例如VARCHAR