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

如何指示Jackson序列化对象内部的字段,而不是对象本身?

马嘉勋
2023-03-14

我有一个item类。类中有一个itemType字段,它的类型是itemType。

大概是这样的。

class Item
{
   int id;
   ItemType itemType;
}

class ItemType
{
   String name;
   int somethingElse;
}
{
  "id": 4,  
  "itemType": {
    "name": "Coupon",
    "somethingElse": 1
  }
}
{
  "id": 4,  
  "itemType": "Coupon"
}

有没有命令杰克逊这样做?

共有1个答案

堵飞鸿
2023-03-14

您需要创建并使用自定义序列化程序。

public class ItemTypeSerializer extends JsonSerializer<ItemType> 
{
    @Override
    public void serialize(ItemType value, JsonGenerator jgen, 
                    SerializerProvider provider) 
                    throws IOException, JsonProcessingException 
    {
        jgen.writeString(value.name);
    }

}

@JsonSerialize(using = ItemTypeSerializer.class)
class ItemType
{
    String name;
    int somethingElse;
}
 类似资料:
  • 主要内容:1 编写核心类,2 运行测试本文讲解如何将一个Java对象序列化为一个json文件,然后读取该json文件读取回对象。在下面的示例中,我们创建Student类。使用Jackson存储到一个student.json文件,该文件拥有Student对象的JSON表示形式。 1 编写核心类 MainApp: 2 运行测试

  • 我有这样一个实体: 和相关的JSON: 我试图在Spring MVC@Controller中以如下方式对其进行反序列化: 添加

  • 问题内容: 我有一堂课POJO 我有一个像 我正在使用Jackson ObjectMapper进行反序列化。在不创建任何其他父类的情况下如何获得? 如果不可能,是否有可能获得仅包含json字符串的第一个元素的对象,即在这种情况下和? 问题答案: 您首先需要获取数组 打印(带有)

  • 问题内容: 我有一个实体: 然后我有一个控制器,其目的是检索书籍,我的问题是,流派字段包含在控制器的json响应中。有什么办法可以排除杰克逊序列化对象时延迟加载的那些字段? 这是我的ObjectMapper的配置: 谢谢! 我无法将其标记为JsonIgnore,因为它将永远在序列化框中。有时候,我将需要随书一起检索体裁,到那时,我将在查询中使用“获取联接”,因此它不会为null。 问题答案: 你可

  • 我有一个实体: 然后我有一个控制器,其目的是检索书籍,我的问题是,我的控制器的json响应中包含了流派字段。有没有办法排除jackson序列化对象时延迟加载的字段? 这是我的ObjectMapper的配置: 谢谢 我不能将其标记为JsonIgnore,因为它将永远脱离序列化框。有时我需要检索书籍的体裁,到那时,我将在查询中使用“fetch join”,这样它就不会为空。

  • 我对对象接口的jackson序列化有问题。 我有课 哪个实现 还有上课 哪个实现 上课 我要和Jackson连载Container得到结果 但事实上我得到了结果 尽管我在映射中指定了点的序列化类型(),但在嵌套对象“point”中具有属性“name”。接口点视图没有方法getName,但结果中存在点的字段“name”。 若我从类容器中的方法getMap中删除注释(),我将得到结果 现在点没有属性"