spring - 具有嵌套属性的 Spring REST 请求(在树结构中)
问题描述
我用下面的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,
"groupIndex": 2,
"values": [
{
"groupId": 4,
"groupIndex": 8,
"values": [
{
"sampleId": 2,
"sampleIndex": 555
},
{
"sampleId": 3,
"sampleIndex": 6
}
]
}
]
}
解决方案
你能做的是
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;
}