问题描述
我用下面的bean创建了spring REST端点,我不确定“值”应该是什么类型?
class Group
{
private long groupId;
private long groupIndex;
private List<????> values
}
class Sample
{
private long sampleId;
private long sampleIndex;
}
有时,我以组列表或样本列表的形式获取“值”请求。 示例请求Json:
请求1:
{
"groupId": 1,"groupIndex": 2,"values": [
{
"sampleId": 2,"sampleIndex": 555
},{
"sampleId": 3,"sampleIndex": 6
}
]
}
请求2:
{
"groupId": 1,"values": [
{
"groupId": 4,"groupIndex": 8,"values": [
{
"sampleId": 2,"sampleIndex": 555
},{
"sampleId": 3,"sampleIndex": 6
}
]
}
]
}
解决方法
您可以尝试:
public class Group {
private Long groupId;
private Long groupIndex;
private Long sampleId;
private Long sampleIndex;
private List<Group> values;
}
这是一种方法。不是唯一一个。
使用Long代替long。这样值就可以为空。
,你能做的是
class Group
{
private long groupId;
private long groupIndex;
private List<Object> values
}
class Sample
{
private long sampleId;
private long sampleIndex;
}
然后使用自定义解串器,可以将List
类型插入Group
或Sample
中。恕我直言,我发现这很麻烦,并使端点过于复杂。我会将端点分为2种不同的方法,这些方法接受不同的请求主体,但保持URL相同。 Spring应该能够确定哪种方法获取哪种对象类型。仅当它深一层时才有效。
class SuperGroup
{
private long groupId;
private long groupIndex;
private List<Group> values
}
class Group
{
private long groupId;
private long groupIndex;
private List<Sample> values
}
class Sample
{
private long sampleId;
private long sampleIndex;
}