JsonConvert.从MVC操作反序列化JsonResult
本文关键字:反序列化 JsonResult 操作 MVC JsonConvert | 更新日期: 2023-09-27 18:27:32
应该很简单!我如何才能完成以下任务?
JsonResult result = JsonConvert.Deserialize(CheckPlan());
其中CheckPlan()返回此:
return Json(new { success = success }, JsonRequestBehavior.AllowGet);
我无法解析JsonResult返回的成功布尔值。我曾尝试将<Dictionary<string,string>>
放在Deserialize之后,但它在语法上犹豫不决。像类型与变量等一样使用
正确的方法是什么?
我知道这是一篇旧帖子,但我遇到了完全相同的问题,我解决了如下问题:
无需使用反序列化程序!
dynamic result = CheckPlan().Data;
Console.WriteLine(result.success);
在我的案例中,我正在为MVC控制器方法编写一个单元测试。由于测试方法在它们自己的项目中,我不得不让它们访问MVC项目的内部,以便dynamic
可以访问结果的Data
对象的属性。为此,在MVC项目的AssemblyInfo.cs
中添加以下行:
// Allow the test project access to internals of MyProject.Web
[assembly: InternalsVisibleTo("MyProject.Test")]
假设您使用的是.NET 4.0或更高版本,则可以使用dynamic
:
dynamic result = JsonConvert.DeserializeObject((string)CheckPlan().Data);
Console.WriteLine(result.success);
如果你不想要dynamic
,你可以创建一个带有success
布尔属性的自定义类:
public class Foo
{
[JsonProperty("success")]
public bool Success { get; set; }
}
然后:
Foo result = JsonConvert.DeserializeObject<Foo>((string)CheckPlan().Data);
Console.WriteLine(result.Success);