2015-04-01 98 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. 
}