无法使用 C# 客户端反序列化日期时间 属性 Neo4j
Cannot deserialize datetime property Neo4j using C# client
我正在尝试使用 C# 客户端从 Neo4j 中取回强类型对象。这一切都有效,直到我添加 DateTime
属性。
我已成功将数据插入到 Neo4j 数据库中,并且可以使用控制台查看它。我也可以查询数据,但我不能 return 任何强类型对象,因为反序列化似乎失败了。
我正在使用参数插入数据:
_graphClient.Cypher
.WithParams(new
{
id = node.Id,
createdAt = node.CreatedAt,
lastModified = node.LastModified
})
.Create("(c { " +
"Id: {id}, " +
"CreatedAt: {createdAt}, " +
"LastModified: {lastModified} } )")
我获取数据的查询非常基础:
nodes = _graphClient.Cypher
.Match("(n)")
.Return((n) => n.As<NeoObject>()).Results.ToList();
但是我收到一个错误...
日志文件说明如下:
Parameter name: content ---> Newtonsoft.Json.JsonReaderException: Could not convert string to DateTime: 17-9-2015 21:57:14 +00:00. Path 'a', line 1, position 32.
数据如下所示(来自日志的条目):
"data" : {
"Id" : 31,
"LastModified" : "2015-09-17T21:57:14Z",
"CreatedAt" : "2015-09-17T21:57:14Z",
}
我的 C# 类型定义:
public class NeoObject
{
public int Id { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime LastModified { get; set; }
}
或
public class NeoObject2
{
public int Id { get; set; }
public DateTime? CreatedAt { get; set; }
public DateTime? LastModified { get; set; }
}
如果我没记错的话,您需要使用 DateTimeOffset 类型作为 属性。
public class NeoObject
{
public int Id { get; set; }
public DateTimeOffset CreatedAt { get; set; }
public DateTimeOffset LastModified { get; set; }
}
编辑
这曾经是这种情况,但最近的更新似乎增加了对 DateTime 对象类型的支持。您使用的是什么版本的 Neo4jClient?您尝试过 DateTimeOffset 吗?
我正在尝试使用 C# 客户端从 Neo4j 中取回强类型对象。这一切都有效,直到我添加 DateTime
属性。
我已成功将数据插入到 Neo4j 数据库中,并且可以使用控制台查看它。我也可以查询数据,但我不能 return 任何强类型对象,因为反序列化似乎失败了。
我正在使用参数插入数据:
_graphClient.Cypher
.WithParams(new
{
id = node.Id,
createdAt = node.CreatedAt,
lastModified = node.LastModified
})
.Create("(c { " +
"Id: {id}, " +
"CreatedAt: {createdAt}, " +
"LastModified: {lastModified} } )")
我获取数据的查询非常基础:
nodes = _graphClient.Cypher
.Match("(n)")
.Return((n) => n.As<NeoObject>()).Results.ToList();
但是我收到一个错误...
日志文件说明如下:
Parameter name: content ---> Newtonsoft.Json.JsonReaderException: Could not convert string to DateTime: 17-9-2015 21:57:14 +00:00. Path 'a', line 1, position 32.
数据如下所示(来自日志的条目):
"data" : {
"Id" : 31,
"LastModified" : "2015-09-17T21:57:14Z",
"CreatedAt" : "2015-09-17T21:57:14Z",
}
我的 C# 类型定义:
public class NeoObject
{
public int Id { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime LastModified { get; set; }
}
或
public class NeoObject2
{
public int Id { get; set; }
public DateTime? CreatedAt { get; set; }
public DateTime? LastModified { get; set; }
}
如果我没记错的话,您需要使用 DateTimeOffset 类型作为 属性。
public class NeoObject
{
public int Id { get; set; }
public DateTimeOffset CreatedAt { get; set; }
public DateTimeOffset LastModified { get; set; }
}
编辑 这曾经是这种情况,但最近的更新似乎增加了对 DateTime 对象类型的支持。您使用的是什么版本的 Neo4jClient?您尝试过 DateTimeOffset 吗?