版本: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”之后的换行符在错误消息返回的字符串中表示。错误消息在两行中给出。]
我对此程序的使用是否正确?
有没有人看过这个问题并修复或解决过它?
答案 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';