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之后,但它在语法上犹豫不决。像类型与变量等一样使用

正确的方法是什么?

JsonConvert.从MVC操作反序列化JsonResult

我知道这是一篇旧帖子,但我遇到了完全相同的问题,我解决了如下问题:

无需使用反序列化程序!

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);