我有以下Json文件:
{
"workflowId": "1",
"cpoWorkflowSteps": [
{
"workflowStepId": "1",
"workflowStepName": "START",
"workflowStepDescription": "Start Step responsable to transfer file one",
"cpoWorkflowStepControlsForWorkflowStepId": [
{
"workflowStepControlId": "1",
"cpoWorkflowStepByWorkflowNextStepId": {
"workflowStepId": "2",
"workflowStepName": "STEP_2",
"workflowStepDescription": "Middle Step responsable to transfer file one",
"cpoWorkflowStepControlsForWorkflowStepId": [
{
"workflowStepControlId": "2",
"cpoWorkflowStepByWorkflowNextStepId": {
"workflowStepId": "3",
"workflowStepName": "STEP_3",
"workflowStepDescription": "Middle Step responsable to transfer file one",
"cpoWorkflowStepControlsForWorkflowStepId": [
{
"workflowStepControlId": "7",
"cpoWorkflowStepByWorkflowNextStepId": {
"workflowStepId": "6",
"workflowStepName": "STEP_6",
"workflowStepDescription": "End Step responsable to transfer file one",
要使用父ID填充子ID,请执行以下操作:
workflow.getCpoWorkflowSteps()
.forEach(cpoWorkStep -> cpoWorkStep.getCpoWorkflowStepControlsForWorkflowStepId()
.forEach(cpoStepControl -> cpoStepControl.setCpoWorkflowStepByWorkflowStepId(cpoWorkStep)));
但是考虑到我不知道嵌套对象的结尾在哪里,如何用父ID填充下一个子ID?
编辑:如何递归调用accept方法来填充下一个对象?
答案 0 :(得分:0)
我需要创建一个递归调用的方法,以使用父ID填充下一个子对象:
private void setCpoWorkflowStepParentId(CpoWorkflowStep cpoWorkflowStep) {
List<CpoWorkflowStepControl> list = cpoWorkflowStep.getCpoWorkflowStepControlsForWorkflowStepId().stream()
.collect(Collectors.toList());
for (CpoWorkflowStepControl cpoWorkflowStepControl : list) {
cpoWorkflowStepControl.setCpoWorkflowStepByWorkflowStepId(cpoWorkflowStep);
if(cpoWorkflowStepControl.getCpoWorkflowStepByWorkflowNextStepId() != null) {
//Call recursively to populate the next CpoWorkflowStep child with the parent id
this.setCpoWorkflowStepParentId(cpoWorkflowStepControl.getCpoWorkflowStepByWorkflowNextStepId());
}
}
}
并调用此方法:
workflow.getCpoWorkflowSteps().forEach(
cpoWorkStep -> this.setCpoWorkflowStepParentId(cpoWorkStep));