2015-04-01 175 views
2

我有下面的代码检测真/假值:从JSON字符串

string result = "{\n \"success\": false,\n \"error-codes\": [\n \"missing-input-response\"\n ]\n}"; 

var results = JsonConvert.DeserializeObject<dynamic>(result); 

var r = results.success; 

现在我需要知道的R是否是真还是假。这里是我有:

if (r.Equals(false)) 
{ 
    //action 
} 

但它似乎是上述测试不起作用。在我的情况下,找到真或假的价值的正确方法是什么?

+1

尝试'BOOL R = results.success;' – dbc 2015-04-01 03:21:13

+1

你有没有通过代码加强与调试器,看看有什么'r'在运行时?验证它被反序列化的类型和值。 – AaronLS 2015-04-01 03:25:49

+0

我编辑过你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2015-04-01 03:36:16

回答

4

表达

JsonConvert.DeserializeObject<dynamic>(result).success 

实际上返回JValue类型,这是不equalfalse的对象。你需要强迫返回一个布尔第一:

var results = JsonConvert.DeserializeObject<dynamic>(result); 
bool r = results.success; // Force "success" to be boolean. 
if (!r) 
{ 
    // Action. 
}