解析Gremlin.Net响应的最佳方法?

hal*_*llo 5 gremlin azure-cosmosdb

Gremlin.Net响应中获取POCO的最佳方法是什么?

现在,我手动转换为字典:

var results = await gremlinClient.SubmitAsync<Dictionary<string, object>>("g.V()");
var result = results[0];
var properties = (Dictionary<string, object>)result["properties"];
var value = ((Dictionary<string, object>)properties["myValue"].Single())["value"];
Run Code Online (Sandbox Code Playgroud)

ADr*_*ger 6

我发现GremlinClient只能返回动态对象,如果你把其他东西作为类型,它就会失败(除非我只是做错了什么)。

我最终做的是将动态对象序列化为 JSON,然后将其反序列化回我想要的对象类型:

var results = await gremlinClient.SubmitAsync<dynamic>("g.V()");
JsonConvert.DeserializeObject<MyResult>(JsonConvert.SerializeObject(results));
Run Code Online (Sandbox Code Playgroud)

动态对象只是一个字典,但是如果您首先将它序列化,它具有适当的字段/属性层次结构,然后可以将其反序列化为您实际期望的内容。

必须进行额外的转换似乎有点痛苦,但这是我让它工作的唯一方法。