neo4j/cypher:字符串到映射的内联转换

tim*_*hes 4 neo4j cypher

这可能是显而易见的,但对我来说不是:我有一个 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
Run Code Online (Sandbox Code Playgroud)

返回:

核心价值  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -     
- - - - - ------------------------------------------------------
{"角色":"消费者", "ipproto":"TCP","l7proto":"tcp:80","port":80,"dir":""} 156
{"角色":"消费者","ipproto":"TCP"," l7proto":"tcp:443","端口":443,"dir":""} 223
{"角色":"消费者","ipproto":"TCP","l7proto":"MSN","端口“:1863,”目录“:”“} 106208

是否可以解析/加载键中的字符串值以将其读取为映射,或者我是否必须在密码查询之外将其转换?

抱歉 - 我对 Neo4j 和 cypher 都不是菜鸟......

Inv*_*con 6

为此,您需要APOC 程序apoc.convert.fromJsonMap(),特别是将其转换为 Cypher 映射。以下是您将如何使用它:

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
...
Run Code Online (Sandbox Code Playgroud)