apoc.convert.fromJsonMap()无法正确处理字符串

时间:2017-07-13 13:42:07

标签: neo4j cypher neo4j-apoc

版本:Neo4j 3.2.2社区; APOC 3.2.0.3

在所有实例中都未正确处理字符串中的转义字符。

这可以按预期工作:

WITH apoc.convert.fromJsonMap( '{"a":42,"b":"foo\\bar","c":[1,2,3]}') AS p RETURN p.b

╒═════════╕
│“p.b”│
╞═════════╡
│ “富\栏” │
└─────────

转义引号无法按预期工作:

WITH apoc.convert.fromJsonMap( '{"a":42,"b":"\"foo\"","c":[1,2,3]}')
AS p RETURN p.b

Neo.ClientError.Procedure.ProcedureCallFailed 无法调用函数apoc.convert.fromJsonMap:引起:java.lang.RuntimeException:无法转换{“a”:42,“b”:“”foo“”,“c”:[1,2,3 ]}用路径映射

加倍反向固相(不可取)给出了这个结果:

WITH apoc.convert.fromJsonMap( '{"a":42,"b":"\\"foo\\"","c":[1,2,3]}') AS p RETURN p.b

╒═════════╕
│“p.b”│
╞═════════╡
│ “\” 福\ “” │
└─────────

转义的换行符会出现同样的错误:

WITH apoc.convert.fromJsonMap( '{"a":42,"b":"foo\nbar","c":[1,2,3]}') AS p RETURN p.b

Neo.ClientError.Procedure.ProcedureCallFailed 无法调用函数apoc.convert.fromJsonMap:引起:java.lang.RuntimeException:无法转换{“a”:42,“b”:“foo” bar“,”c“:[1,2,3]}以路径

进行映射

[请注意,“foo”之后的换行符在错误消息返回的字符串中表示。错误消息在两行中给出。]

我对此程序的使用是否正确?

有没有人看过这个问题并修复或解决过它?

1 个答案:

答案 0 :(得分:0)

使用双反斜杠代替单个反斜杠来转义字符实际上有效。

例如,这两个查询都返回true

RETURN apoc.convert.fromJsonMap( '{"a":42,"b":"\\"foo\\"","c":[1,2,3]}').b = '"foo"';

RETURN apoc.convert.fromJsonMap( '{"a":42,"b":"foo\\nbar","c":[1,2,3]}').b = 'foo\nbar';