如何检查JSON对象键是否具有一定的值
如何检查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"
}
]
编辑答案:
让我们参考以下方法:
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链接并检查结果。
你能解释一下如何使用它吗?我知道这一点,我想学习正确的方法。 – Rorabih
@Rorabih,我给出了示例代码。数据[键]将具有所有的对象。要访问每个对象,您必须使用data [key] .OBJECTNAME(您在代码中给出的)。请详细说明您的要求,如果您觉得有用,请接受答案。 –
我是新来的,所以请耐心等待。我没有得到你刚刚给出的语法和解释。在这种情况下OBJECTNAME和hasOwnPropery是什么(对应于我上面的问题)。我想实现的目标是在我的JSON中查看每个具有相同**状态(JSON中的一个键)的任务**,然后将它们组合在一个div中。希望你能理解。 – Rorabih
你的方法是有效的(即使它是一个JS对象,而不是JSON),你是否有错误? – MinusFour
提供更好的问题解答。您没有使用传入该函数的参数,并且其他变量从无处出现 – charlietfl
我没有得到任何回报。我更新了我的代码。看上面。这是我如何提取 – Rorabih