Javascript / jQuery добавить в JSON

#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 никогда не будет совпадать, поскольку оно проверяет значения, не приводя их к одному и тому же типу.