c# - Newtonsoft JSON - 动态对象

标签 c# json dynamic deserialization json.net

我正在使用 Newtonsoft JSON 库对传入的原始 JSON 执行动态反序列化,并发现了一些我无法解释的东西。

起点是以下 JSON 字符串:

{
  "task": {
    "dueDate": "2012-12-03T00:00:00"
  }
}

没什么太复杂的...

在代码中我正在这样做:

var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;

这段代码已经存在了几个月并且运行良好,但是在最近的测试版本中,我们看到了以下错误:

'Newtonsoft.Json.Linq.JObject' does not contain a definition for 'task'

Stack Trace: at CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)

现在这很奇怪,如果我更改上面的代码,一切都会重新开始工作:

DateTime dueDate = dyn.task.dueDate.Value;

DateTime dueDate = dyn["task"]["dueDate"].Value;

因此,尽管这是“已修复”,但我不明白为什么要修复它以及可能的原因是什么。有人有什么想法吗

最佳答案

你可以试试这个:

dynamic task = JObject.Parse(rawJson);

文档:Querying JSON with dynamic

关于c# - Newtonsoft JSON - 动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13683757/

相关文章:

c# - 在参数列表中声明变量

c# - Automapper.Mapper.CreateMap无法解析

ios - 将 JSON 结果的 setValue(纬度/经度坐标为 Double)设置为 Swift 中的 CoreData

c# - 调用存储在字符串变量中的函数

ios - 如何在 iOS 应用程序中处理动态 WS URL

c# - BackgroundWorker 超时

c# - 如何找出最快的算法

JSON 编码返回空白 Golang

javascript - 如何遍历 JSON obj 的属性?

c++ - 如何动态创建相关类型?