我想编写ScriptBasedOIDCProtocolMapper
脚本来处理我的角色声明的一些自定义逻辑。不幸的是,我无法正确返回序列化数组。
即。当脚本返回以下数组时:
...other claims...
claimName: { 0: "one", 1: "two" }
声明值被序列化为地图:
...other claims...
claimName: ["one", "two"]
我期待JSON数组:
scope
我该怎么办?
我想避免提供自定义协议映射器,我还有其他用于脚本映射器的用例,即处理aud
和category::SearchOnCategorya()
声明。
答案 0 :(得分:2)
我加强了搜索,我刚刚找到问题的答案
如何从JavaScript创建Java数组?
on Rhino FAQ
您必须使用Java反射。例如,要创建长度为5的java.lang.String数组,请执行
var stringArray = java.lang.reflect.Array.newInstance(java.lang.String, 5)
;然后,如果您希望将字符串“hi”分配给第一个元素,只需执行
即可
stringArray[0] = "hi"
;
但要使其工作,我需要通过添加.class
来修改它以获得预期的类型定义:
java.lang.reflect.Array.newInstance(java.lang.String.class, 5);`