2012-05-07 34 views
5

(bağlam) Ben o zaman bir nesneye serisi alır bir MVC3 denetleyiciye aşağı geçti alır JSON nesnesi haline topluyorum unsurların bir demet gelen bilgiler var.yuvalanmış JSON nesnesi oluşturma dinamik

'ürün' ve 'öğesi ayarları' vardır. Şu anda, düz JSON nesnesinde hem öğe hem de öğe ayarlarına sahibim. İdeal olarak, her bir öğenin altına yerleştirilmiş öğe ayarlarına sahip olmak isterim. Benim Kod şu anda şöyle görünür:. Ayarlar eklendi olsun nerede $ ("settingInput") altında

var editeditems=[]; 
... 

     $("#SaveChanges").click(function() { 

      //this works and retrieves all of the item IDs 
      $(".portlet").each(function() { 

       var itemname = $(this).data("itemname"); 
     editeditems.push(
         { 
          "itemname": itemname 
         }); 

    itemname = $(this).data("itemname"); 

     $(".settingInput").each(function() { 

      editeditems.push(
       { 
       "settingkey":$(this).attr("name"), 
       "settingvalue":$(this).attr("value") 
       }); 


       }); 


}); 

her fonksiyonudur. 'EditedItems.settings.push ..' gibi sözdizimi denedim ama bir sözdizimi hatası ile döner.

Herhangi bir yardım büyük takdir!

cevap

12
var editeditems = []; 
... 

$('#SaveChanges').click(function() { 
    $('.portlet').each(function() { 
     var settings = []; 
     $('.settingInput').each(function() { 
      settings.push({ 
       settingkey: $(this).attr('name'), 
       settingvalue: $(this).attr('value') 
      }); 
     }); 

     editeditems.push({ 
      itemname: $(this).data('itemname'), 
      settings: settings 
     }); 
    }); 

    ... 
}); 

örnek çıktı üretecektir:

var editeditems = 
[ 
    { 
     "itemname": "item1", 
     "settings": [ 
      { 
       "settingkey": "key1", 
       "settingvalue": "value1" 
      }, 
      { 
       "settingkey": "key2", 
       "settingvalue": "value2" 
      } 
     ] 
    }, 
    { 
     "itemname": "item2", 
     "settings": [ 
      { 
       "settingkey": "key1", 
       "settingvalue": "value3" 
      }, 
      { 
       "settingkey": "key2", 
       "settingvalue": "value4" 
      } 
     ] 
    } 
]; 
+0

Bu harika çalıştı! Teşekkürler! – Scottingham

3
var ei = {'settings': [3]}; 
ei.settings.push(4); 
console.log(ei); 
// This will output an object with property settings and value an array with values (3 and 4) 
0

Sadece gibi

[{"itemname": "item1","settingkey": "key1","settingvalue": "value1"}, 
{"itemname": "item2","settingkey": "key2","settingvalue": "value2"},]; 

düz veri dizisi json oluşturmak için gereken sadece bu

gibi işlemek daha