#javascript #jquery #json
#javascript #jquery #json
Вопрос:
Я новичок в работе с JSON, и я пытаюсь создать объект, который выглядит как:
var newsAttachInfo = [{
"fkAttachmentID": attachmentID,
"enuAttachmentType": "thumbnail",
"fldDisplayText": getCaption(attachmentID)
}, {
"fkAttachmentID": $('#feature-top').val(),
"enuAttachmentType": "feature-top",
"fldDisplayText": getCaption($('#feature-top').val())
}, {
"fkAttachmentID": $('#feature-bottom').val(),
"enuAttachmentType": "feature-bottom",
"fldDisplayText": getCaption($('#feature-bottom').val())
}];
Тем не менее, я хочу проверить, равен ли $(‘#feature-top’).val() 0, прежде чем добавлять эту запись. Итак, для строки это будет что-то вроде:
if ($('#feature-top').val() !== 0) {
newsAttachInfo = {
"fkAttachmentID": $('#feature-top').val(),
"enuAttachmentType": "feature-top",
"fldDisplayText": getCaption($('#feature-top').val())
}
}
Как мне сделать что-то подобное с JSON? Спасибо!
Комментарии:
1.
newsAttachInfo.fkAttachmentID = ...
, так же, как и любой другой объект. На этом этапе вы не работаете с JSON. Вы работаете с объектом.2.
var x = '{"x": "y"}';
<= это переменная с JSON.var x = { x: 'y' };
<= это не JSON
Ответ №1:
Структура данных, с которой вы работаете, представляет собой массив объектов, а не JSON.
Чтобы сделать то, что вам требуется, вы можете создать свой массив с двумя статическими объектами, а затем динамически добавлять третий на основе значения в #feature-top
using push()
, например:
var newsAttachInfo = [{
"fkAttachmentID": attachmentID,
"enuAttachmentType": "thumbnail",
"fldDisplayText": getCaption(attachmentID)
}, {
"fkAttachmentID": $('#feature-bottom').val(),
"enuAttachmentType": "feature-bottom",
"fldDisplayText": getCaption($('#feature-bottom').val())
}];
if ($('#feature-top').val() !== '0') {
newsAttachInfo.push({
"fkAttachmentID": $('#feature-top').val(),
"enuAttachmentType": "feature-top",
"fldDisplayText": getCaption($('#feature-top').val())
});
}
Обратите внимание, что в этом примере я использовал '0'
as val()
возвращает строку. Использование ===
для сравнения int и string никогда не будет совпадать, поскольку оно проверяет значения, не приводя их к одному и тому же типу.