3

版本: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

╒═════════╕<br>│“pb”│<br>╞═════════╡<br>│“foo\bar”│<br>└─── ──────┘

转义引号不能按预期工作:

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

╒═════════╕<br>│"pb"│<br>╞═════════╡<br>│"\"foo\""│<br>└─ ────────┘

转义的换行符得到相同的错误:

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”之后的换行符在错误消息返回的字符串中表示。错误信息分两行给出。]

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

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

4

1 回答 1

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';
于 2017-07-13T19:55:18.933 回答