应该简单!我怎样才能完成以下任务?
JsonResult result = JsonConvert.Deserialize(CheckPlan());
CheckPlan()返回此内容:
return Json(new { success = success }, JsonRequestBehavior.AllowGet);
我无法解析JsonResult返回的成功boolean值。我试图在反序列化之后立即放置<Dictionary<string,string>>
,但是它在语法上不知所措。用作类型与变量等等。
这样做的正确方法是什么?
答案 0 :(得分:4)
我知道这是一个老帖子,但我遇到了完全相同的问题,我解决了以下问题:
无需使用解串器!
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")]
答案 1 :(得分:2)
假设您使用的是.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);