2011-03-02 35 views
4

我想知道如何在json中創建switch語句?在Json上轉換語句?

{"Errors":{"key1":"afkafk"},"IsValid":false,"SuccessMessage":""} 

我試圖

switch(response) 
{ 
    case response.Errors.key1: 
    alert('test'); 
    default: 
} 

但它似乎忽略我的第一例。

編輯

// if undefined then go to next if statement - I am not sure if I can do something 
// like !=== null 
if (response.Errors.key1) 
      { 
       // display value of key1 
      } 
else if(response.Errors.Key2) 
{ 
    // display value of key2 differently 
} 

所以這是我想只是一個開關語句來完成。

+3

這沒有任何意義。 'response'永遠不會等於'response.Errors.key1'。 – 2011-03-02 22:17:18

+1

你似乎誤解了'switch'。你認爲它應該怎麼做? – delnan 2011-03-02 22:17:23

+0

爲什麼不呢。響應持有json。我可以做response.Errors.Key1,它會打印出值。所以我只是需要它也看看關鍵。 – chobo2 2011-03-02 22:18:28

回答

8

這將是正確的語法:

switch(response.Errors.key1) 
{ 
    case 'afkafk': 
     alert('test'); 
     break; 
    default: 
     alert('default'); 
} 

但我懷疑,你的情況下的結構將更加適應:

{ Errors: { key: 'key1', message: 'afkafk' }, IsValid: false, SuccessMessage: '' } 

,因爲這將讓你在鑰匙開關:

switch(response.Errors.key) 
{ 
    case 'key1': 
     alert(response.Errors.message); 
     break; 
    default: 
     alert('default'); 
} 
+0

嗯,我期待着看看錯誤中的關鍵值。所以如果它是key1 =>這樣做。如果它是key2那麼做。我想我可能不得不循環所有的鍵,然後如果語句檢查然後(即使對於我隔離出來的鍵是特殊的鍵,並且沒有其他的將在Errors數組中,因此爲什麼我試圖做一個switch語句) – chobo2 2011-03-02 22:22:33

+1

@ chobo2,如果你想實現這一點,我會建議你以下的JSON結構:「{」錯誤「:{」key「:」key1「,消息:」afkafk「},」IsValid「:false,」SuccessMessage「 : 「」}'。 – 2011-03-02 22:24:15

2

這聽起來像你想打開的值key1而不是名稱key1

switch (response.Errors.key1) { 
    case 'afkafk': 
    ... 
} 
1

我不完全確定你要達到的目標。你是否試圖根據key1的值進行切換? Switch語句需要能夠將您傳遞給switch語句的變量與case語句的值進行匹配,因此以下內容可以正常工作,但我不確定它是否屬於您:

switch (response.Errors.key1) { 
    case 'afkafk': //do something 
    break; 
} 
+0

我試圖將鑰匙匹配起來,並根據鑰匙做些事情。所以如果我看到key1,那麼我想要在key1中顯示值,然後在key2中顯示。 – chobo2 2011-03-02 22:23:09

+0

啊,我現在明白了。在這種情況下,你會想迭代錯誤的屬性。你可以這樣說:'對(在response.Errors VAR鍵){ 開關(response.Errors [關鍵]){ 案 'afkafk': \t //做點什麼 \t休息; } }' – Melv 2011-03-02 22:28:15