问题描述
我正在构建使用来自存储过程的数据的微服务。
当我获得数据时,我将它放在 extendedMandatesFound
的列表中,如下所示:
{
"extendedMandatesFounds": [
{
"profileId": "56426","profileName": "ADMIN","permissionId": "SYstem","subPermisssionId": "TEST1"
},{
"profileId": "56426","permissionId": "AUTH.SR","subPermisssionId": "APPROVE"
},"subPermisssionId": "EXPORT"
}
]
}
由于有重复的字段,我想使用这样的类来格式化它:
"mandates": [
{
"profileName": "ADMIN","profileId": "56426","permissions": [
{
"permissionId": "SYstem","subPermissions": [
{
"subPermissionId": "TEST1"
}
]
},{
"permissionId": "AUTH.SR","subPermissions": [
{
"subPermissionId": "APPROVE"
},{
"subPermissionId": "EXPORT"
}
]
}
]
}
]
我知道我需要用“foreach”迭代三次才能实现这一点,但我不断收到重复的条目:
"mandates": [
{
"profileName": "ADMIN","permissions": [
{
"permissionId": "SYstem","subPermissions": [
{
"subPermissionId": "TEST1"
}
]
},{
"permissionId": "AUTH.SR","subPermissions": [
{
"subPermissionId": "APPROVE"
},{
"subPermissionId": "EXPORT"
}
]
},{
"subPermissionId": "EXPORT"
}
]
}
]
}
]
如何使用 foreach 结构进行迭代?
这是我尝试过的,但它给了我上面显示的结果:
List<Mandate> mandates = new ArrayList<Mandate>();
List<Permission> permissions = new ArrayList<Permission>();
for (ExtendedMandatesFound emf : listFound) {
Mandate mandate = new Mandate();
mandate.setProfileName(emf.getProfileName());
mandate.setProfileId(emf.getProfileId());
for (ExtendedMandatesFound emf2 : listFound) {
if (mandate.getProfileName().equals(emf2.getProfileName())) {
Permission permission = new Permission();
permission.setPermissionId(emf2.getPermissionId());
List<SubPermission> subPermissions = new ArrayList<SubPermission>();
for (ExtendedMandatesFound emf3 : listFound) {
if (emf3.getPermissionId().equals(permission.getPermissionId())) {
SubPermission subPermission = new SubPermission();
subPermission.setSubPermissionId(emf3.getSubPermisssionId());
subPermissions.add(subPermission);
}
}
permission.setSubPermissions(subPermissions);
permissions.add(permission);
}
}
mandate.setPermissions(permissions);
mandates.add(mandate);
}
以下是课程:
ExtendedMandatesFound.java
public class ExtendedMandatesFound {
private String profileId;
private String profileName;
private String permissionId;
private String subPermisssionId;
}
Mandate.java
public class Mandate {
private String profileName;
private String profileId;
private List<Permission> permissions;
}
Permission.java
public class Permission {
private String permissionId;
private List<SubPermission> subPermissions;
}
SubPermission.java
public class SubPermission {
private String subPermissionId;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)