我需要从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);
}
}
}
答案 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()相匹配。