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

在@Controller中接受map,但将每个对象反序列化为其他特定的类

富涛
2023-03-14
@Entity
@Data
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class")
public class PurchaseOrder {
@Entity
@Data
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class")
public class PurchaseOrderEntry {
@PostMapping("/complete")
public ResponseEntity<?> complete(
    @RequestBody(required = false) Map<String, Object> variables
)

共有1个答案

许博达
2023-03-14

@jsonTypeInfo用于多态类型。解释这一点的最好方法是用一个例子。

假设你上了下面的课:

public class Zoo {
    public Animal animal;

    @JsonTypeInfo(
      use = JsonTypeInfo.Id.NAME, 
      include = As.PROPERTY, 
      property = "type")
    @JsonSubTypes({
        @JsonSubTypes.Type(value = Dog.class, name = "dog"),
        @JsonSubTypes.Type(value = Cat.class, name = "cat")
    })
    public static class Animal {
        public String name;
    }

    @JsonTypeName("dog")
    public static class Dog extends Animal {
        public double barkVolume;
    }

    @JsonTypeName("cat")
    public static class Cat extends Animal {
        boolean likesCream;
        public int lives;
    }
}

如果您有一个zoo对象,其中有两只动物(一只cat和一只dog)并将它们序列化为JSON,那么这些动物中的每一只都将包含一个附加属性(在本例中为type),该属性具有相应的catdog类型。

 类似资料:
  • 问题内容: 我有一个Cabin类,其中包含Row对象的列表。我想像这样序列化对象,但是在反序列化时,我希望Row对象是从Row对象继承的RowRule对象。下面是我一直在尝试的一些示例代码。 问题答案: 简单的答案是使用a 并从返回a : 但是,使用意味着您的JSON中可能存在多态属性。不幸的是,忽略了这些属性。因此,有必要做一些额外的工作并创建: 然后像这样使用它: 原型小提琴。 最后,在使用时

  • 我想序列化一些XML。我的代码运行正常,但序列化不成功,对象为空,而不是填充数据。该值只是类型值:{OrangeCdToCollectorz.OrangeCd}。我怀疑我的阶级定义。以下是我正在序列化的类: 这是我的代码,尝试使用几种众所周知的技术对相同的XML进行反序列化,无论是作为字符串const还是来自文件: 以下是源XML的示例

  • 我在爪哇是新来的! 我的目标:我有收集的对象,让我保持任何类型的对象通过一些键(如地图)(把他们到它和从)。我可以向它添加任何类型的对象(例如,我可以添加MyClass的对象)。然后,我使用GSON序列化这个对象以JSON格式分离字符串(例如,我可以序列化这个字符串以分离文件)。当我想拿回某个对象时,我通过键从collection请求它,collection将对应的字符串反序列化到object对象

  • 问题内容: 我在使用AJAX访问的Java服务器应用程序中有一个字符串。它看起来像以下内容: 当从服务器提取字符串时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?还是我必须手动拆分字符串并手动构建对象? 问题答案: 现代浏览器支持。 在不浏览器,您可以包括在库中。

  • 问题内容: 如何将json格式的数据字符串转换为 匿名对象 ? 问题答案: C#4.0添加了可以使用的动态对象。看看这个。

  • 有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio

  • 问题内容: 我需要将Objective- C对象序列化和反序列化为JSON以存储在CouchDB中。人们是否有通用解决方案最佳实践的示例代码?我看了几个JSON框架,它们在NSDictionary / NSArray级别停止了。即,许多框架会将NSDictionary / NSArray序列化和反序列化为JSON。但是我仍然要做将NSDictionary转换为Objective-C对象的工作。 为

  • 我在尝试“反序列化”对象时遇到以下错误: 我需要能够使用这个XStream库序列化/反序列化对象,甚至是那些没有参数构造函数的对象。