Neo4j/Cypher:将字符串内联转换为映射

4

这可能很明显,但对我来说不是: 我有一个JSON对象,其中包含一个包含字符串化JSON的属性(不要问为什么,它必须是这样的) 当我展开该对象并获取该属性(键)时,是否有一种方法将其转换为内联到密码查询中的地图?

WITH {input} AS S
UNWIND S AS stat
WITH stat.key.str as K, stat.value as value
UNWIND K as key
RETURN key, value

返回:

键                                                                          值    
-----------------------------------------------------------------------------------------
{"role":"consumer","ipproto":"TCP","l7proto":"tcp:80","port":80,"dir":""} 156
{"role":"consumer","ipproto":"TCP","l7proto":"tcp:443","port":443,"dir":""} 223
{"role":"consumer","ipproto":"TCP","l7proto":"MSN","port":1863,"dir":""} 106208

是否可能解析/加载键中的字符串值以将其读取为映射,还是我必须在cypher查询之外进行转换?

抱歉 - 我对neo4j和cypher都很新手...

1个回答

6
你需要使用APOC Procedures,特别是apoc.convert.fromJsonMap()来将其转换为Cypher map。以下是具体操作步骤:
WITH {input} AS S
UNWIND S AS stat
WITH stat.key.str as K, stat.value as value
UNWIND K as key
WITH apoc.convert.fromJsonMap(key) as map, value
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接