给定字符串到对象的转换

时间:2012-02-25 10:42:06

标签: javascript jquery arrays string object

我必须从

获取当前字符串
<div id="someif" array-data="2012-03-01:1,2012-03-11:1,2012-03-21:1"></div>
var mystring={2012-03-01:1,2012-03-11:1,2012-03-21:1}

并且需要创建这个js对象

var dates_allowed = {
      '2012-03-01': 1,
      '2012-03-11': 1,
      '2012-03-21': 13
};

我试过但没有结果 - 我收到错误

jQuery.parseJSON(myString);

谢谢!

2 个答案:

答案 0 :(得分:1)

<强>解决方案

使用您当前的HTML,您可以执行以下操作:

var dates_allowed = {};

$('#someif').attr('array-data').split(',').each(function(){
    var date = this.split(',');
    dates_allowed[date[0]] = date[1];
});

更好的解决方案

但在我看来,您最好通过将HTML更改为以下内容来利用jQuery data

<div id="someif" data-dates="{&quot;2012-03-01&quot;:1,&quot;2012-03-11&quot;:1,&quot;2012-03-21&quot;:1}"></div>

使用以下JavaScript:

var dates_allowed = $('#someif').data('dates');

scessor's example JSFiddle

答案 1 :(得分:0)

您无法使用JSON解析类似'2012-03-01:1,2012-03-11:1,2012-03-21:1'的字符串

这个字符串是可解析的:

'[{"allowed":"2012-03-01","index":"1"}, {"allowed":"2012-03-11","index":"1"},{"allowed":"2012-03-21","index":"1"}]'

因此,用作data attribute

<div id="someif" data-allowed='[{"allowed":"2012-03-01","index":"1"}, {"allowed":"2012-03-11","index":"1"},{"allowed":"2012-03-21","index":"1"}]'>

var myAllowedDates = JSON.parse($('#someif').attr('data-allowed'));

请参阅this jsfiddle