динамический JSON
интересует собственно как динамически собирать JSON?
как присаивать значения к ключам ето понятно. интересует именно как динамически добавалять ключи и к ним соответсвенно значения? |
Формируете объект и делаете ему JSON.stringify(obj).
|
Спасибо, нашол пример, но если я не ошибаюсь то так не подойдет.
Задача в том что на странице есть несколько input type="text" и нужно сформировать JSON объект имя_поля:значение_поля. в примере который я смотрел, объект сформирован заранее, а количество полей на странице может быть совершенно разное и с разными именами. вот тот пример: var contact = new Object(); contact.firstname = "Jesper"; contact.surname = "Aaberg"; contact.phone = ["555-0100", "555-0120"]; var memberfilter = new Array(); memberfilter[0] = "surname"; memberfilter[1] = "phone"; var jsonText = JSON.stringify(contact, memberfilter, "\t"); /* the value of jsonText is '{ "surname": "Aaberg", "phone": [ "555-0100", "555-0120" ] }' */ |
Цитата:
|
1)можно пример пожалуйста.
вот например есть два массива: имена и значения var name =['name','email','phone']; var val = ['js','js@js','12312']; нужно софрмировать JSON: {"name":"js","email":"js@js","phone":"12312"} 2) Цитата:
var obj = {}; obj.name = 'js'; ето понятно. а если name - получаю динамически на странице? например: var obj = {}; var property = document.getElementById('name'); var key = property.name; var val = property.value; //вот как тут добавть? //obj.key = val; //так объекту добавится же свойство 'key' а не значение переменной key. может тут eval в помощь? но не получилось :( разьясните пожалуйста. |
решил пока пробелму так :
k и v масисвы с именами и значениями. if(k.length == v.length){ var sData = '{'; for(var j=0; j<k.length; j++){ sData = sData + '"'+k[j]+'"'+':'+'"'+v[j]+'",'; } sData = sData.substr(0,(sData.length-1)); sData = sData + '}'; var t = eval('('+sData+')'); alert(t['name']); } не сильно ли криво? п.с. все таки можете пожалуйста разьяснить мне второй вопрос в предыдушем сообшении? п.с.с. и послений вопрос: почему var t = eval('('+sData+')'); работает, а var t = eval(sData); не работает? в чем суть дополнитеьных скобочек в кавычках? |
Цитата:
|
*fail*
читал и не один раз. как то совершенно из головы вылетело. |
не, это уже *epicfail*:) Ну вот же! Ипрям черным по белому:
var name = 'test' o[name] = 5 |
уже увидел, спасибо )
|
Часовой пояс GMT +3, время: 06:14. |