【问题标题】:Given string to object convert给定字符串到对象的转换
【发布时间】:2012-02-25 10:42:05
【问题描述】:

我必须从

获取当前字符串
<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);

谢谢!

【问题讨论】:

  • array-data?最好写data-array

标签: javascript jquery arrays string object


【解决方案1】:

解决方案

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

var dates_allowed = {};

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

更好的解决方案

但在我看来,您最好利用 jQuery data 将您的 HTML 更改为:

<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.

【讨论】:

  • var dates_allowed = $('#someif').data('dates');值未定义
  • 您的“更好的解决方案”将返回一个字符串,因为单引号不是 json 有效的字符串包装器(请参阅json documentation)。使用&amp;quote; 将它们更改为双引号。另见this example。并且整数值不需要用引号引起来。
【解决方案2】:

您无法使用 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

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2011-08-17
    • 2012-04-06
    相关资源
    最近更新 更多