2015-10-21 3 views
0

Клиент имеет одно требование, чтобы текст содержимого начинался с нового порядкового номера для каждого отдельного содержимого. Для содержимого JSON рассмотрим следующий пример JSON. Я получу этот JSON в интерфейсе как ответ от бэкэнда. Я повторяю, что JSON рекурсивно, поэтому теперь я хочу создать его порядковый номер, итерации по нему. Какой простой способ сделать это?Создать последовательность из json

var myobj = { 
"name": "sample",      //1 
"def": [        //2 
     { 
     "setId": 1,     //2.1.1 
     "setDef": [     //2.1.2 
      {   
       "type": "STRING",  //2.1.2.1.1 
       "name": "ABC"   //2.1.2.1.2 
      }, 
      { 
       "type": "STRING",  //2.1.2.2.1 
       "name": "XYZ"   //2.1.2.1.2 
      } 
     ] 
    }, 
    { 
     "setId": 2,     //2.2.1 
     "setDef": [     //2.2.2 
      { 
       "type": "STRING", //2.2.2.1.1 
       "name": "abc"  //2.2.2.1.2 
      }, 
      { 
       "type": "STRING", //2.2.2.2.1 
       "name": "xyz"  //2.2.2.1.1 
      } 
     ] 
    } 
], 
"property": {   //3 
    { 
     "color": "red" //3.1.1 
    }, 
    { 
     "run": true //3.2.1 
    }, 
    { 
     "width": [120, 330, 332] //3.3.1 
    } 
}, 
listing: true //4 

};

Вот мой код:

function displayContent(obj) { 
    jQuery.each(obj, function(key, val) { 
     recursiveIterObj(key, val, obj); 
    }); 
} 
function recursiveIterObj(key, val, obj) { 
     if(!isplain(val)){ 
      setContentData(key, curr_seq, last_seq, ""); 
      $.each(val, function(k,v){ 
       recursiveIterObj(k, v, val); 
      }); 
     }else{ 
      setContentData(key, curr_seq, last_seq, val); 
     } 
} 

function isplain(data) { 
    return (typeof data === 'string' || typeof data === 'number')? 
     true:false; 
} 
function setContentData(key, curr_seq, last_seq, val){ 
      $(".heading").text(key); 
      $(".sequence").txt(curr_seq); // if this is 2.1.2 or 4 
      $(".sequence_last").txt(last_seq); // then, this should be 2.1.1 or 3 
      $(".txt_content").text(val); 
} 
$(function(){ 
displayContent(obj); 
}) 

ПРИМЕЧАНИЕ - Выше JSON является случайным JSON из Интернета.

+0

JSON! == JavaScript Object – phuzi

+0

@yoshi no that was for trex – phuzi

+0

Ваш JSON недействителен, лет можно проверить [здесь] (http://jsonlint.com) – MaxZoom

ответ

1

Свойства в объектах в JavaScript не гарантируются. Только в случае массива вы увидите последовательность, итерацию в JavaScript.

Поскольку ECMAScript 2015, использование объекта Map может быть альтернативой. Карта разделяет некоторые сходства с объектом и гарантирует порядок ключей.

Смежные вопросы