Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要关于如何将具有相同键的两个值从json格式解析为java映射的建议吗_Java_Hashmap_Ldap - Fatal编程技术网

需要关于如何将具有相同键的两个值从json格式解析为java映射的建议吗

需要关于如何将具有相同键的两个值从json格式解析为java映射的建议吗,java,hashmap,ldap,Java,Hashmap,Ldap,我正在将LDAP中的ldif属性读入我的java程序,我最初的想法是将这些属性放入一个映射中,然后从映射中解析它们,但我发现,有一个名为“departmentNumber”的属性,其中包含两个json格式的值 departmentNumber: {"sid":"729999","uid":501,"name":"tebase","role":"managers","title":"sales","groups":["others"]} departmentNumber: {"sid":"7246

我正在将LDAP中的ldif属性读入我的java程序,我最初的想法是将这些属性放入一个映射中,然后从映射中解析它们,但我发现,有一个名为“departmentNumber”的属性,其中包含两个json格式的值

departmentNumber: {"sid":"729999","uid":501,"name":"tebase","role":"managers","title":"sales","groups":["others"]}
departmentNumber: {"sid":"724605","uid":37,"name":"tebase","role":"managers","title":"develope","groups":["leaders"]}
所以我用地图把它们放进去,一些代码如下所示

但是我的方法只能检索第一个json值,它包含{“sid”:“729999”},但没有第二个值包含{“sid”:“724605”}

我观察到程序日志是:

这是从ldif属性读取的日志 这是将日志放入地图并将其解析出来的日志 如您所知,只有一个值,即sid:72999,而不是两个值

原始ldif属性为:

LDAPv3 带作用域子树的基 过滤器:uid=brucele 请求:全部

Z39414,经理,developer.alle.com dn:cn=Z39414,ou=Managers,dc=developer,dc=alle,dc=com 布鲁西里 用户密码:qwdmsdierf 邮寄:brucelee@gm.macom 信息:2006/02/12 李小龙 部门编号: {“sid”:“729999”,“uid”:501,“name”:“tebase”,“role”:“managers”,“title”:“sales”,“groups”:[“others”]}  部门编号: {“sid”:“724605”,“uid”:37,“name”:“tebase”,“role”:“managers”,“title”:“develope”,“groups”:[“leaders”]} 部门:000000 李小龙 对象类:inetOrgPerson 对象类:organizationalPerson 对象类:person 对象类:top cn:Z39414 展品名称:李小龙 描述:李小龙

搜索结果 搜索:2 结果:0成功 numResponses:2 货币:1

我的问题是,我如何将这两个json值都放入我的映射中,或者我对映射的使用是错误的,并且有更好的方法来处理这种情况

公共数据模型getUser(字符串uid、字符串passwd、字符串角色、数据模型用户)引发异常{ 私有映射=null; if(角色相等(“经理”)){ map=Ldap.getAttrubites(ldapurl、uid、passwd); 列表标题数组=新的ArrayList(); List rolesArray=new ArrayList(); map.forEach((键,值) ->{logger.info(“{}-{}”,键,值);}); if(键等于(“部门编号”)){ List model=map.get(“部门号”).get(); model.stream().forEach(k->{ 对于(int i=0;ijava.util.Map接口只为每个键保存一个值。如果要为每个键保存多个值,需要为
V
部分指定一个集合类。例如,如下所示

Map<String, List<String>> map = ...
Map=。。。

Java EE API中定义的
接口就是一个实现您想要做的事情的示例。

为什么不使用JSON解析器?
2019 22:30:58,247 services.LdapService services.LdapService.getUser(LdapService.java:251)
ldap user:{"username":"brucelee","fullname":"Bruce Lee","email":"brucelee@gm.macom","departmentid":"729999","titles":[{"schoolid":"729999","titles":["managers","sales"]}],"cloudroles":{"usage":"clouddev","roles":[{"appname":"mail","departmentid":"729999","titles":["managers","sales"]}]},"guid":"c00d5ba660145307c84f2c1e1c557e4ededaf1830029d40aa5b244027","pid":"Z39414","openid":"http://openid.macom/brucelee"}  
Map<String, List<String>> map = ...