在.Net中反序列化Json字符串而不创建类型或匿名类型
我有以下格式的JSON字符串在.Net中反序列化Json字符串而不创建类型或匿名类型,.net,json,.net,Json,我有以下格式的JSON字符串 { "Request": { "Header": { "Action": "Login" }, "DataPayload": { "UserName": "user", "Password": "password" } } } 我需要在不创建任何类型或匿名类型的情况下反序列化上述JSON字符串,并且我应该能够在.NET中访问如下属性 Request.Header.Action:获取操作值。 Request.D
{
"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过早优化是万恶之源。可读性、灵活性和可维护性等因素更为重要。出于这些原因,我会选择第一种选择。