【问题标题】:Serialize/Deserialize Json DateTime in Neo4jClient在 Neo4jClient 中序列化/反序列化 Json DateTime
【发布时间】:2014-09-14 07:29:19
【问题描述】:

我使用 Neo4jClient 来使用 Neo4j,我使用 CRUD 实体的密码代码,遵循代码:

_graphClient.Cypher.Merge("(n:Movie { Id:101 })")
            .Set("n.Key = 55,n.DateTime='" +DateTime.UtcNow.ToString()+"'").ExecuteWithoutResults();

_graphClient.Cypher
            .Match("(n:Movie)-[r:RelName]-(m:Movie)")
            .Where((EntityNode n) => n.Id == 20)
            .Return.......

public class EntityNode
{
    public int Id { get; set; }
    public string Key { get; set; }
    public DateTime DateTime { get; set; }
}

错误:Neo4j 返回了有效响应,但是 Neo4jClient 无法反序列化为您提供的对象结构。无法反序列化 DateTime。

另一方面,我以不同的方式使用 jsonconvertor,例如:

   _graphClient.Cypher.Merge("(n:Movie { Id:101 })")
                .Set("n.Key = 55,n.DateTime=" +JsonConvert.SerializeObject(DateTime.UtcNow)).ExecuteWithoutResults();

我仍然有 错误

【问题讨论】:

    标签: c# .net json serialization neo4jclient


    【解决方案1】:

    将其作为适当的参数传递:

    graphClient.Cypher
        .Merge("(n:Movie { Id:101 })")
        .Set("n.Key = {key}, n.DateTime = {time}")
        .WithParams(new {
            key = 55,
            time = DateTimeOffset.UtcNow
        })
        .ExecuteWithoutResults();
    

    这样,Neo4jClient 会为你做序列化,你不会引入很多安全和性能问题。

    这是在文档中:https://github.com/Readify/Neo4jClient/wiki/cypher#parameters

    【讨论】:

    • 如果我使用字符串而不是日期时间!工作!但不能为日期时间序列化类!我有错误
    【解决方案2】:

    我最近遇到了同样的问题,因为日期时间值来自 neo。

    我已将 neo 中的日期时间存储为纪元时间,但在检索时我在课堂上使用了 long。因此,它给了我上述错误。

    尝试对上述日期时间使用字符串。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多