关于字符串内容中存在双引号后,在之后子图等查询结果的展示问题

  • nebula 版本:v2-beta
  • 部署方式:docker
  • 问题的具体描述:当字符串内容存在 " 后子图等查询返回查询结果时会把 " 直接展示出来,这样非常难以进行解析,我个人认为应该变为 \" 进行返回,想听听官方时怎么想的

    另外,我看studio里面整得挺不错的,有没有源码啊
    image

你这里看到字符串其实是 nebula-go client 给格式化之后返回给 studio 前端的,这里这么显示原因有二:

  1. 与 nebula-console 使用相同的格式呈现给用户;
  2. 与 openCypher TCK 定义中的格式保持兼容。

这里不清楚你的使用场景如何,如果你是直接使用 nebula 的 client,可以直接通过 client 返回的数据结构组装成你想要的任何字符串(你看到的字符串也是这么做的)。

studio 的代码没有开源,但是这块不涉及到 studio 的代码,而是调用的 nebula-http-gateway 的 API,这块代码后续我们会开源出来。至于进度要看 @jerry.liang 那边的完成情况

目前我使用的是java-client,如果执行
update vertex “100” set player.name=“Ti\",size:20, place:\"m Duncan”
之后再去执行
get subgraph 6 steps from “100”
通过client查询就会得到


这个结果明显是不正确的,解析正确的情况下也平白多了很多属性
怎么才能解析成下面这样的结果呢?

@yee

你是说这里的显示没有考虑到字段的值有引号的情况,对吧?这块需要 @Aiee @dingding 来确认一下对应的字符串有无做处理。

如果是直接使用 java client 的话,你可以能通过 client 拿到对应 response 的结构,然后直接解析结构中的 Value 得到 Edge 和 Vertex 的。具体示例可以参考:

https://github.com/vesoft-inc/nebula-java/blob/master/examples/src/main/java/com/vesoft/nebula/examples/GraphClientExample.java#L25

我们在处理这种情况的时候保持了和open cypher一样的行为,例如在open cypher中执行如下语句:

return {name:"Ti\",size:20, place:\"m Duncan"}

输出为:

╒═════════════════════════════════════════╕
│"{name:"Ti\",size:20, place:\"m Duncan"}"│
╞═════════════════════════════════════════╡
│{"name":"Ti",size:20, place:"m Duncan"}  │
└─────────────────────────────────────────┘

实际处理时Nebula也是将 "{name:"Ti\",size:20, place:\"m Duncan"}" 解析成一整个字符串的

1 个赞