2016-01-23 97 views
1

如何檢查JSON對象鍵是否具有某個值?如何檢查JSON對象鍵是否具有一定的值

我使用PHP來獲取數據和json_encode以獲取JSON輸出。之後我使用Ajax將結果追加到div中。

我試圖做到的,是如果某個鍵具有一定的價值 - 然後做他們組合在一起:這樣的事情:

If Key_Status = "value_Solved" { 
// do something 
} else If Key_Status = "value_Not_Solved" { { 
// do something else 
}; 

我沒有收到任何錯誤,也沒有輸出。

這是我迄今取得:

     $.ajax({ 
        url: "api-json.php?api", 
       data: {id: idGet}, 
        dataType: "text", 
        success: function(data) { 
         var json = $.parseJSON(data); 
         if (json) { 
          $.each(json, function(idx, obj) { 
           //now json variable contains data in obj format 
           //let's display a few items 
           var id = obj.task.id; 
           var customer = obj.task.customer; 
           var task = obj.task.task; 
           var status = function(key, val) { 
            var elm = obj.task.status; 
            if (elm == 'Solved') { 
             $("#"+id).css("background", "blue"); 
             console.log("#"+id); 
            } 
           }; 
           var solver = obj.task.solver; 
           var issuer = obj.task.issuer; 
           var added = obj.task.added; 
           var label = obj.task.label; 

           $('#results') 
           .append(" <div class='board-list-box' id='" + id + "'> <a class='board-list-box-edit'><span class='edit'></span><span class='update'></span><span class='delete'></span><span class='screen-reader-text'>Edit</span></a> <label class='board-list-box-label " + label + "'></label> <p class='board-list-box-text'> " + task + "</p> <span class='board-list-box-info'>" + added + "</span> </div>"); 
          }); 
         } else { 
          $('#results').html("<p class='error'>" + json + " tasks to do </p>"); 
         } 
        }   
       }); 

我的JSON輸出是這樣的:

[ 
    { 
    "task": { 
     "id": "537", 
     "task": "Test 1", 
     "description": "", 
     "customer": "", 
     "issuer": "", 
     "solver": "", 
     "label": "green", 
     "status": "Not started", 
     "deadline": "0000-00-00 00:00:00", 
     "added": "16-01-24 06:20:55" 
    }, 
    "comments": "comments", 
    "labels": "labels" 
}, 
{ 
    "task": { 
     "id": "538", 
     "task": "Test 2", 
     "description": "", 
     "customer": "", 
     "issuer": "", 
     "solver": "", 
     "label": "green", 
     "status": "Not started", 
     "deadline": "0000-00-00 00:00:00", 
     "added": "16-01-24 06:20:58" 
    }, 
    "comments": "comments", 
    "labels": "labels" 
} 

]

+0

你的方法是有效的(即使它是一個JS對象,而不是JSON),你是否有錯誤? – MinusFour

+0

提供更好的問題解答。您沒有使用傳入該函數的參數,並且其他變量從無處出現 – charlietfl

+0

我沒有得到任何回報。我更新了我的代碼。看上面。這是我如何提取 – Rorabih

回答

1

編輯答案:

讓我們參考以下方法:

function CheckTasks() { 
    var Tasks = '[{ "task": { "id": "537", "task": "Test 1", "description": "", "customer": "", "issuer": "", "solver": "", "label": "green", "status": "Not started", "deadline": "0000-00-00 00:00:00", "added": "16-01-24 06:20:55" }, "comments": "comments", "labels": "labels" }, { "task": { "id": "538", "task": "Test 2", "description": "", "customer": "", "issuer": "", "solver": "", "label": "green", "status": "Not started", "deadline": "0000-00-00 00:00:00", "added": "16-01-24 06:20:58" }, "comments": "comments", "labels": "labels" }]'; 

    var obj = JSON.parse(Tasks); 
    var groupedTasks=[]; // Array which will have the Task IDs if the Status is Not started. 

    for (var key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     //alert(obj[key].task.status); // To access the Status of a Task 

     if (obj[key].task.status == "Not started") { 
     groupedTasks.push(obj[key].task.id); // Push the Task ID in the array. 
     } 
    } 
    } 
    alert(groupedTasks) ; // The Grouped Tasks with Status as Not started will be available in this Array. 
} 

JSON.parse()方法將字符串解析爲JSON。

key指存在的任務數量。我們有2個任務(537 & 538)。

hasOwnProperty()方法返回一個布爾值,指示對象是否具有指定的property

在上面的代碼中,我們遍歷每個key(任務)並檢查它是否有property或不。如果它有property,則使用obj[key].task.status獲取value

創建了一個數組groupedTasks,如果狀態爲未啓動,則將這些任務的ID添加(推送)到此數組中。

請參考此JSFiddle鏈接並檢查結果。

+0

你能解釋一下如何使用它嗎?我知道這一點,我想學習正確的方法。 – Rorabih

+0

@Rorabih,我給出了示例代碼。數據[鍵]將具有所有的對象。要訪問每個對象,您必須使用data [key] .OBJECTNAME(您在代碼中給出的)。請詳細說明您的要求,如果您覺得有用,請接受答案。 –

+0

我是新來的,所以請耐心等待。我沒有得到你剛剛給出的語法和解釋。在這種情況下OBJECTNAME和hasOwnPropery是什麼(對應於我上面的問題)。我想實現的目標是在我的JSON中查看每個具有相同**狀態(JSON中的一個鍵)的任務**,然後將它們組合在一個div中。希望你能理解。 – Rorabih

相關問題