使用.each()动态创建JSON数组

时间:2012-07-09 22:31:01

标签: jquery json

我正在尝试动态创建JSON数组。在网站中,有一个动态数字< div id =“#selected”>,我需要获取所有值并创建一个JSON数组。

我遇到过.push()功能,但我无法弄明白。

<!-- there could be a million of these, or only one... each value is unique though -->
<div id="selected" value="5|3"></div>
<div id="selected" value="3|65"></div>


function json_array_selected() {

var JSon = {};
$('div#selected').each(function() {
        // let's first split the given values
        var Split = $(this).attr('value');
        Split = Split.split('|');
        var Type = Split[0];
        Value = Split[1];

        // now let's set up our Json array... using the value = type way, there should never be
        // any repeating 
        JSon.Value = Type;

});
return JSon;
}

2 个答案:

答案 0 :(得分:6)

而不是

JSon.Value = Type;

尝试

JSon[Value] = Type;

或者您将始终覆盖名为“Value”的键

答案 1 :(得分:0)

首先,HTML中不能有两个具有相同ID的节点。您必须为这些div标记分配一些类。例如 -

&lt;div class="selected" value="5|3">&lt;/div>
&lt;div class="selected" value="3|65">&lt;/div>

我尝试了jsfiddle.net上的一段代码

function json_array_selected() {
  var JSon = {};
  $('div.selected').each(function() {
    // let's first split the given values
    var Split = $(this).attr('value');
    Split = Split.split('|');
    var Type = Split[0];
    Value = Split[1];
    JSon[Value] = Type;
  });
  return JSon;
}
var res = json_array_selected();
alert(JSON.stringify(res));
alert(res["3"]);

生成的JSON数组是

{"3":"5","65":"3"}