在 tinkergraph 中创建节点时,属性 的值是否支持 \n?
Is \n supported in the value of the property, while creating a node in tinkergraph?
我正在尝试将 json 数组存储为 属性,用于在 tinkergraph 中创建的节点。
public void testnewLine() {
String Value = "[{\n" +
" \"detailAccountType\": 5120,\n" +
" \"name\": \"Ventes dep roduits résiduels en France\",\n" +
" \"id\": 3,\n" +
" \"accountNumber\": \"70301\",\n" +
" \"fullyQualifiedName\": \"Ventes de produits fabriqués, prestations de services, marchandises: Ventes de produits résiduels: Ventes de produits résiduels en France\"\n" +
" }\n" +
"]";
String query = String.format("g.addV('test').property('value', '%s').project('b')", Value);
List<Result> result = helper.getQueryUtils().executeQuery(query);
Assert.assertNotNull(result);
String deleteQuery = "g.V().hasLabel('test').drop()";
helper.getQueryUtils().executeQuery(deleteQuery);
}
我收到以下错误:
Script5.groovy: 1: expecting ''', found '\n' @ line 1, column 37.
g.addV('test').property('value', '[{
^
由于您使用的是字符串 API 来发送您的查询,因此您必须对字符转义序列进行两次转义。例如,您可以使用 StringEscapeUtils from Apache Commons Text,但简单的 String::replaceAll
也可以:
String query = String.format("g.addV('test').property('value', '%s').project('b')",
Value.replaceAll("[\r\n]", "\\n"));
但是,在您的特定示例中,最好的解决方案是根本不使用任何换行符,因为它们除了使 JSON blob 在人眼中看起来更好之外没有其他用途。我可能更愿意用单个空格替换任何空格序列:
Value.replaceAll("[\r\n\t ]+", " ")
只有当 JSON blob 中的值使用这些字符中的任何一个 and/or 转义序列时,这才会成为问题。在这种情况下,双重转义是你唯一的选择。
我正在尝试将 json 数组存储为 属性,用于在 tinkergraph 中创建的节点。
public void testnewLine() {
String Value = "[{\n" +
" \"detailAccountType\": 5120,\n" +
" \"name\": \"Ventes dep roduits résiduels en France\",\n" +
" \"id\": 3,\n" +
" \"accountNumber\": \"70301\",\n" +
" \"fullyQualifiedName\": \"Ventes de produits fabriqués, prestations de services, marchandises: Ventes de produits résiduels: Ventes de produits résiduels en France\"\n" +
" }\n" +
"]";
String query = String.format("g.addV('test').property('value', '%s').project('b')", Value);
List<Result> result = helper.getQueryUtils().executeQuery(query);
Assert.assertNotNull(result);
String deleteQuery = "g.V().hasLabel('test').drop()";
helper.getQueryUtils().executeQuery(deleteQuery);
}
我收到以下错误:
Script5.groovy: 1: expecting ''', found '\n' @ line 1, column 37.
g.addV('test').property('value', '[{
^
由于您使用的是字符串 API 来发送您的查询,因此您必须对字符转义序列进行两次转义。例如,您可以使用 StringEscapeUtils from Apache Commons Text,但简单的 String::replaceAll
也可以:
String query = String.format("g.addV('test').property('value', '%s').project('b')",
Value.replaceAll("[\r\n]", "\\n"));
但是,在您的特定示例中,最好的解决方案是根本不使用任何换行符,因为它们除了使 JSON blob 在人眼中看起来更好之外没有其他用途。我可能更愿意用单个空格替换任何空格序列:
Value.replaceAll("[\r\n\t ]+", " ")
只有当 JSON blob 中的值使用这些字符中的任何一个 and/or 转义序列时,这才会成为问题。在这种情况下,双重转义是你唯一的选择。