c# - 对 Gremlin.net ResultSet 使用 JsonConvert.DeserializeObject(),对象属性为空或空(c#)
问题描述
使用 Gremlin.Net (3.4.6) 和 CosmosDB/Graph 查询后,动态类型的 ResultSet 被序列化。此后将其反序列化为 Person 类型的特定 List<>。基本顶点值在那里,但是属性的值是空的。我尝试了各种解决方案(包括使用 Wrapper)但没有成功(Person 对象为空)。使用 JSON 属性没有区别。
Gremlin.Net.Driver.ResultSet<dynamic> result = await ExecuteQuery();
string pList = JsonConvert.SerializeObject(result);
List<Person> people = JsonConvert.DeserializeObject<List<Person>>(pList);
pList 如下所示: 请注意,属性成员在 JSON 中具有值
Person 类定义为:
public class Person : VertexBase
{
[JsonProperty("Name")]
public VertexProperty<string, NameMeta> Name { get; set; }
public string[] PhoneNumbers { get; set; }
public int Age { get; set; }
public Person()
{
}
}
这样做的正确方法是什么?当然,获取嵌套的属性字典应该是相当简单的事情。这些示例不显示反序列化。
解决方案
我遇到了类似的问题,我通过向我的类(Person
在您的情况下为类)显式添加一个包含 Properties 字典的成员来解决它:
public class PropertyKeyValuePair
{
public string Id;
public string Value;
}
public class Person
{
// Other fields
// ...
public Dictionary<string, PropertyKeyValuePair[]> properties;
}
该JsonConvert.DeserializeObject
函数现在应该能够将属性反序列化到properties
成员中。
推荐阅读
- php - 注意:试图获取非对象的属性'num_rows'(数据库为空!请先注册一些员工)
- python - 包含部分字符串的数组中的 iem 数
- javascript - 当我在反应中重新排序表格时,“孩子已经有父母,必须先将其移除”
- java - 减去时间时我总是得到 0
- javascript - 循环获取请求在最后一项之前返回错误
- sql - 日期类型的查询 substr 的索引是什么?
- kubernetes - 当您的主容器完成其工作时,如何终止同一个 pod 中的另一个容器
- java - 构建API的时候同步一个方法对吗
- c# - INotifyDataErrorInfo - 模型或 ViewModel
- mpdf - MPDF 错误消息:必须在表格中位于前面