在.Net中反序列化Json字符串而不创建类型或匿名类型

在.Net中反序列化Json字符串而不创建类型或匿名类型,.net,json,.net,Json,我有以下格式的JSON字符串 { "Request": { "Header": { "Action": "Login" }, "DataPayload": { "UserName": "user", "Password": "password" } } } 我需要在不创建任何类型或匿名类型的情况下反序列化上述JSON字符串,并且我应该能够在.NET中访问如下属性 Request.Header.Action:获取操作值。 Request.D

我有以下格式的JSON字符串

{
  "Request": {
    "Header": { "Action": "Login" },
    "DataPayload": {
      "UserName": "user",
      "Password": "password"
    }
  }
}
我需要在不创建任何类型或匿名类型的情况下反序列化上述JSON字符串,并且我应该能够在.NET中访问如下属性

Request.Header.Action:获取操作值。

Request.DataPayload.UserName:获取用户名

您可以使用

将字符串解析为字符串并将其用作字典:

var obj = JObject.Parse(str);
var action = obj["Request"]["Header"]["Action"];
或者将其反序列化为动态对象,如果您不介意丢失静态键入:

dynamic obj = JsonConvert.DeserializeObject<dynamic>(str);
var action = obj.Request.Header.Action;
dynamic obj=JsonConvert.DeserializeObject(str);
var action=obj.Request.Header.action;

请不要只要求我们为您解决问题。向我们展示你是如何试图自己解决问题的,然后向我们展示结果是什么,并告诉我们为什么你觉得它不起作用。请参阅“”,以获取您真正需要阅读的优秀文章。您可以递归地将其反序列化到字典中,如下所述:@tt_emrah,无需手动将其转换为字典。JObject已经实现了
IDictionary
@EZI:哦,我错过了,对不起。。。但是,我记得,如果找不到键或值为null,它们的行为会有所不同。dcastro,不需要
@HarshanandWankhede你打算做多少次这样的操作才能看到差异?@HarshanandWankhede过早优化是万恶之源。可读性、灵活性和可维护性等因素更为重要。出于这些原因,我会选择第一种选择。