Синтаксис JSON: добавить атрибут rel?

#json

#json

Вопрос:

Как мне добавить атрибут rel = blah к строке JSON? У меня есть следующее в файле JSON:

 [
    {"image":"/images/image1.png", "link":"http://mylink.com"},
    {"image":"/images/image2.png", "link":"http://mylink.com"},
    {"image":"/images/image3.png", "link":"http://mylink.com"}
]
  

В результате создаются изображения и ссылки, которые я хочу разместить на странице. Но я попытался добавить атрибут rel следующим образом:

 {"image":"/images/image3.png", "link":{"rel":"blah","href":"http://mylink.com"}}
{"image":"/images/image3.png", "link":{"rel":"blah","uri":"http://mylink.com"}}
  

но результат всегда был одинаковым: <a href="object Object"> кажется, простая вещь, но, похоже, я нигде не могу найти правильный синтаксис.

Часть javascript для очистки изображений, которая создает изображение / ссылку, это:

  setImage: function(index) {
        this.element.empty();
        var anchor = new Element('a', {
            'href': this.imageList[index].link
        });
        this.images[index].inject(anchor);
        anchor.inject(this.element);
        this.oldIndex = index;
    },
  

Комментарии:

1. Это проблема с конвертером.

2. Покажите код JavaScript, который обрабатывает строку JSON для создания ссылок.

3. Добавлено выше. В любом случае, это часть кода, его часть скрипта очистки изображений, я думаю, что то, что я опубликовал выше, является релевантным фрагментом.

Ответ №1:

Это вопрос о Javascript, а не JSON. Вам нужно переписать функцию, которая генерирует выходные данные HTML, для вашей новой структуры объекта. Теперь я не знаю, с чем вы там работаете, но из функции, которую вы опубликовали, я предполагаю, что вам нужно изменить:

 setImage: function(index) {
    this.element.empty();
    var anchor = new Element('a', {
  
          // here it comes:
         'href': this.imageList[index].link.href,
         'rel': this.imageList[index].link.rel
         // that's it
  
     });
    this.images[index].inject(anchor);
    anchor.inject(this.element);
    this.oldIndex = index;
},
  

Комментарии:

1. Да, теперь, когда я понимаю, как все это соединяется, это кажется довольно простым 🙂 Спасибо за помощь — хотя, я думаю, что после «this.ImageList[index].link.href» должна быть запятая

Ответ №2:

Из того, что я могу собрать, какой бы код ни обрабатывал ваш JSON, он выполняет следующее:

  1. Создайте тег привязки
  2. Создайте тег изображения
  3. Установите для атрибута src тега image значение image в объекте JSON.
  4. Установите для атрибута href тега привязки значение link в объекте JSON.

Однако с обновленным кодом это работать не будет. Вам нужно сделать следующее:

  1. Создайте и закрепите тег.
  2. Создайте тег изображения.
  3. Установите для атрибута src тега image значение image в объекте JSON.
  4. Установите для атрибута href тега привязки значение link.href в объекте JSON.
  5. Установите для атрибута rel тега привязки значение link.rel в объекте JSON.

Или вы могли бы просто изменить свой исходный JSON следующим образом:

 {"image":"/images/image1.png", "link":"http://mylink.com", "rel":"blah"}
  

Тогда ваш алгоритм для реализации был бы следующим:

  1. Создайте и закрепите тег.
  2. Создайте тег изображения.
  3. Установите для атрибута src тега image значение image в объекте JSON.
  4. Установите для атрибута href тега привязки значение link в объекте JSON.
  5. Установите для атрибута rel тега привязки значение rel в объекте JSON.

Комментарии:

1. Ах, теперь я понимаю немного лучше. Javascript, который создает ссылки, представляет собой довольно большой скрипт, создающий программу очистки изображений. Фрагмент, который создает изображение и ссылку, теперь добавлен выше.