繁体   English   中英

如何从 Json 中知道对象在 SpringBoot 中的哪个类?

[英]How to know from Json which class an object is in SpringBoot?

我在请求正文中有以下 JSON 对象:

JSON

{
    "nombre": "example",
    "number": 100,
    "listOfMeasurables":{
          "measurableOne":{
              "positionOne":[0,3,0],
              "positionTwo":[0,3,0]
          },
          "measurableTwo":{
              "positionOne":[0,3]
          }
    }
}

现在我有抽象类 Measurable 和 MeasurableOne、MeasurableTwo 和 MeasurableThree,它们扩展了 Measurable。

可衡量的

public abstract class Measurable {
    public abstract String getType();
    
}

可测量的

public class MeasurableOne extends Measurable {
    protected int [] positionOne;
    protected int [] positionTwo;
    
    public MeasurableOne(int [] positionOne, int [] positionTwo) {
        this.positionOne = positionOne;
        this.positionTwo = positionTwo;
    }
    
    @Override
    public String getType() {
        return "MeasurableOne";
    }
}

可测量二

public class MeasurableTwo extends Measurable {
    protected int [] positionOne;
    
    public MeasurableTwo(int [] positionOne) {
        this.positionOne = positionOne;
    }
    
    @Override
    public String getType() {
        return "MeasurableTwo";
    }
}

可测三

public class MeasurableThree extends Measurable {
    protected int [] positionOne;
    protected int [] positionTwo;
    protected int [] positionThree;
    
    public MeasurableThree(int [] positionOne, int [] positionTwo, int [] positionThree) {
        this.positionOne = positionOne;
        this.positionTwo = positionTwo;
        this.positionThree = positionThree;
    }
    
    @Override
    public String getType() {
        return "MeasurableThree";
    }
}

现在,我有一个控制器,它将接收这个 json。 listOfMeasurables 数组可以按任意顺序包含 measurableOne、measurableTwo、measurableThree、1、2 或 3 个。 我如何让控制器知道可测量的类型以创建该对象?

@PostMapping(path = "/createActivity")
    public ResponseEntity<String> createActivity(@RequestBody Activity activity) { ->> HERE
        
    }

任何帮助表示赞赏! 谢谢

您的Activity可以使用以下代码定义,jackson 将处理它

public class activity{
    private String nombre;
    private Integer number;
    private ListOfMeasurables listOfMeasurables;

    // getter and setter
}

public class ListOfMeasurables {
    private MeasurableOne measurableOne;
    private MeasurableTwo measurableTwo;
    private MeasurableThree measurableThree;

    // getter and setter 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM