#javascript #json
#javascript #json
Вопрос:
У меня есть массив JSON, подобный этому
var filter_value_data = [{"Status":[{"name":"Open","id":"1"},{"name":"Pending","id":"2"},{"name":"Resolved","id":"3"},{"name":"Closed","id":"4"},{"name":"Evaluation","id":"5"}]},{"Payment Status":[{"name":"Paid","id":"10"},{"name":"UnPaid","id":"11"},{"name":"Part Paid","id":"12"}]},{"Priority":[{"name":"Low","id":"6"},{"name":"Medium","id":"7"},{"name":"High","id":"8"},{"name":"Urgent","id":"9"}]}]
Я попробовал filter_value_data[«Status»], что, очевидно, неверно. Как мне получить элементы JSON для Status
использования таких имен, как Status,Payment Status
?
Комментарии:
1. Это не строка JSON, это литерал JavaScript (массива).
2. @Aravind: Дайте мне знать, соответствует ли ответ тому, что вы ожидали, или нет.
3. Я проголосовал против, поскольку вы не ответили и не проголосовали за большинство ответов ниже. Не могли бы вы принять ее и проголосовать за любую, которая, по вашему мнению, этого заслуживает? Так мы благодарим людей за их усилия на этом сайте.
Ответ №1:
filter_value_data
это массив (имеющий []
), поэтому используйте filter_value_data[0].Status
для получения первого элемента-объекта со свойством "Status"
.
Всегда полезно отформатировать свой код, чтобы увидеть иерархию структур:
var filter_value_data = [
{
"Status": [
{
"name": "Open",
"id": "1"
}, {
"name": "Pending",
"id": "2"
}, ...
]
}, {
"Payment Status": [
{
"name": "Paid",
"id": "10"
}, ...
]
}, {
"Priority": [
{
"name": "Low",
"id": "6"
}, ...
]
}
];
Комментарии:
1. Я хочу извлечь подобное
filter_value_data["Status"]
. У меня есть список всех таких имен. Они являются динамическими. У меня также есть набор этих имен.
Ответ №2:
С вашим текущим JSON вы не можете получить элементы только с именем.
Вы можете получить статус с filter_value_data[0]['Status']
помощью и статус оплаты с filter_value_data[1]['Payment Status']
помощью .
Это потому, что ключи находятся в отдельных объектах в массиве. Чтобы получить их, filter_value_data['Status']
вам нужно изменить свой JSON на
var filter_value_data = {
"Status":[
{"name":"Open","id":"1"},
{"name":"Pending","id":"2"},
{"name":"Resolved","id":"3"},
{"name":"Closed","id":"4"},
{"name":"Evaluation","id":"5"}
],
"Payment Status":[
{"name":"Paid","id":"10"},
{"name":"UnPaid","id":"11"},
{"name":"Part Paid","id":"12"}
],
"Priority":[
{"name":"Low","id":"6"},
{"name":"Medium","id":"7"},
{"name":"High","id":"8"},
{"name":"Urgent","id":"9"}
]
};
Я написал это на своем телефоне, поэтому он не так хорошо отформатирован, как обычно. Я изменю это как можно скорее.
Ответ №3:
С помощью вашего текущего JSON создан результат, который может быть вам полезен.
JS:
$.each(filter_value_data,function(ind,val){
var sta = val.Status; // Status Object get displayed
for(var i=0;i<sta.length;i ){
var idVal= sta[i].id;
var nameVal = sta[i].name;
Statusarray.push(idVal,nameVal);
console.log(Statusarray);
}
})
Ответ №4:
Вы можете использовать приведенный ниже код, он вернет объект status
filter_value_data[0]['Status']
filter_value_data[0]['Payment Status']
чтобы получить единственное значение, которое вы используете :
filter_value_data[0]['Status'][0]['name']