我有一个jsonb存储地图的列,就像{'a':1,'b':2,'c':3}每行中键的数量不同.
我想算一下 - jsonb_object_keys可以检索密钥,但它在 setof
有这样的事吗?
(select count(jsonb_object_keys(obj) from XXX )
Run Code Online (Sandbox Code Playgroud)
(这不会起作用ERROR: set-valued function called in context that cannot accept a set)
json_object_keys(json)
jsonb_object_keys(jsonb)
setof text Returns set of keys in the outermost JSON object.
json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}}')
json_object_keys
------------------
f1
f2
Run Code Online (Sandbox Code Playgroud)
交叉表不可行,因为密钥的数量可能很大.
我想创建一些依赖于其他(第 3 方)罐子的包(这是否是一个好的做法是另一个话题)
我能够使用 gradle 生成一个胖 jar(它包含所有依赖的 jar)和 osgi 清单
我的项目 Layout 将 jar 存储在 libs/ 文件夹中 制作 jar 后,第 3 方 jar(例如 ibm.jar)位于 jar 的根目录中。
我将我的 gradle 任务是使用带有一些基本 osgi 指令的 osgi 插件,我仅手动将导出包指定为我的程序包,而不是其他 3 个 jar
但是,当我尝试安装该捆绑包时,它显示错误
Error starting file:****.jar (org.osgi.framework.BundleException: Unresol
ved constraint in bundle ***** [24]: Unable to resolve 24.0: missi
ng requirement [24.0] osgi.wiring.package; (osgi.wiring.package=com.ibm.mq))
org.osgi.framework.BundleException: Unresolved constraint in bundle **** [24]: Unable to resolve 24.0: missing requirement [24.0] osgi.wiring.package; (osgi.wiring.package=com.ibm.mq)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:382
6)
at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
at …Run Code Online (Sandbox Code Playgroud) 我明白
例如
map.getOrElse("key1","default")
Run Code Online (Sandbox Code Playgroud)
同时我正在与Java库进行交互,其中一些值为null.
例如Map("key1" - > null)
getOrElse 在这种情况下将抛出空指针.
我想处理这两种情况并导致写这样的东西
def getOrElseNoNull[A,B](map:Map[A,B],key:A,default:B) = {
map.get(key) match{
case Some(x) if x != null => x
case _ => default
}
}
Run Code Online (Sandbox Code Playgroud)
这很难看.(它是Map [Any],我需要一个来自该键的字符串)
getOrElseNoNull(map,"key1","").asInstanceOf[String])
Run Code Online (Sandbox Code Playgroud)
是否可以使用隐式来扩展地图,或任何其他优雅的方式?