我需要从列表的字符串中迭代数据,并从以下JSON的“ MemberOf”参数中添加到另一个列表字符串中

时间:2020-01-22 20:08:17

标签: java json spring

我需要从List字符串中迭代数据,并从以下JSON添加到另一个list字符串中。

  {
    "userID":"navin",
    "userType":"H",
    "ln":"khus",
    "givenName":"navin Khush",
    "title":"",
    "info":"DD JFKSO",
    "memberOf":[
    "CN=EPWV_ADJSJ,OU=Groups,OU=PA,ou=EPWV,DC=emea",
    "CN=EPWV_PPA_rp,OU=Groups,OU=PA,ou=EPWV,DC=ssf2",
    "CN=EPWV_PPA_rp,OU=Groups,OU=PA,ou=EPWV,DC=ssf3",
    "CN=EPWV_PPA_rp,OU=Groups,OU=PA,ou=EPWV,DC=ssf4"
    ]

    }

出于上述要求,我创建了以下逻辑。

私有列表memberOf; 私人列表成员;

ListIterator<String> iterator = memberOf.listIterator();
{
while (iterator.hasNext()) {
    String s = iterator.next();
    if(s=="CN") {
        member.add(s);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

s不会==“ CN”。 s将.contains()“ CN”。 Java ==比较器正在检查左侧的对象是否与右侧的对象引用了相同的内存点。在上面的示例数据之后,您的比较将如下所示:“ CN = EPWV_ADJSJ” ==“ CN”。

如果要检查字符串是否相等,则要使用“ CN = EPWV_ADJSJ” .equals(s)(先放置字符串可防止出现null指针异常,否则s为null)。但是,只有它们完全相等时,才会返回true。

您可能追求的是:

if(s.contains("CN"){
  member.add(s)
} 

作为旁注,您也可以使用.startsWith(“ CN”)代替.contains(“ CN”)。区别在于:“ ACN”与startsWith()不匹配,但与.contains()相匹配。

相关问题