javascript - 使用 JavaScript 或 jQuery,如何将名称-值对字符串转换为对象?

标签 javascript jquery string object

我有一个存储为字符串的名称值对,我想将其转换为 jQuery 或 JavaScript 中的对象。这是该对的一个示例。

{'auto':false, 'itemAWidth':20, 'itemBWidth':20, 'marginLeft':0, 'marginRight':0, 'maximumWidth':0, 'propW':5, 'propX':5, 'propY':null, 'propZ':null}

这被存储为字符串。我怎样才能将其转换为正确的对象?下面是我的一些不成功的尝试。

convertValuePairsToObject = function (pairs) {

  var outObject = {};
  var nodes = pairs.split(',');
  for (var node in nodes) {

  }

  //alert(pairs);
  //return jQuery.parseJSON('"' + pairs + '"');
  //      var outObject = {};
  //      //var nodes = pairs.split(','), dest = outObject;
  //      var  = pairs.split(',');
  //      return outObject;
}

当我尝试使用 jQuery.parseJSON() 函数时,代码返回一个非常长的字符串,如下所示。

{'0':'{', '1':''', '2':'0', '3':''', '4':':', '5':''', '6':'{', '7':''', '8':',', '9':' ', '10':''', '11':'1', '12':''', '13':':', '14':''', '15':''', '16':''', '17':',', '18':' ', '19':''', '20':'2', '21':''', '22':':', '23':''', '24':'a', '25':''', '26':',', '27':' ', '28':''', '29':'3', '30':''', '31':':', '32':''', '33':'u', '34':''', '35':',', '36':' ', '37':''', '38':'4', '39':''', '40':':', '41':''', '42':'t', '43':''', '44':',', '45':' ', '46':''', '47':'5', '48':''', '49':':', '50':''', '51':'o',

========================================

在 2013 年 1 月 4 日上午 10:51 进行编辑

========================================

所以我尝试了你们提供的建议,并得到了这个。

  convertObjectToString = function (obj) {
      return JSON.stringify(obj);
      //      var str = '';
      //      for (var p in obj) {
      //         if (obj.hasOwnProperty(p)) { str += "'" + p + "':" + formatValue(obj[p]) + ", "; }
      //      }
      //      if (str.length > 0) {
      //         str = String(str).substring(0, str.length - 2); // Trim trailing comma
      //         str = '{' + str + '}';
      //      }
      //      return str;
   }

   convertValuePairsToObject = function (pairs) {
      return jQuery.parseJSON('[' + pairs + ']');
   }

但是现在当执行convertValuePairsToObject时,代码会在名称值对前面添加以下内容:

{"0":

如果我重复触发该函数,它将继续将上述内容添加到字符串中,如下所示:

{"0":{"0":{"0":

我不需要零索引标识符。我怎样才能消除它?

最佳答案

您需要将单引号替换为双引号:

var json = "{'auto':false, 'itemAWidth':20, 'itemBWidth':20, 'marginLeft':0, 'marginRight':0, 'maximumWidth':0, 'propW':5, 'propX':5, 'propY':null, 'propZ':null}".replace(/'/g, '"')

然后,您可以使用JSON.parse:

JSON.parse(json)

关于javascript - 使用 JavaScript 或 jQuery,如何将名称-值对字符串转换为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14322639/

相关文章:

PHP 重写 AJAX post 请求

c - C 变量中需要的垃圾值

c++ - 为什么我的结构只在最后一个而不是每个上存储字符串?

Python拆分字符串并混淆中间

javascript - javascript AMD 加载样式的 IDE 自动完成

javascript - 当为 javascript 变量设置 html 属性时,为什么循环会在警报语句之前终止?

javascript - 仅在 iOS 设备上将 css 应用于无序列表中的链接

javascript - 如何通过 jquery 更改输入名称的一部分?

javascript - 从下拉列表的选定值创建表列标题

javascript - 如何为该代码设置动画和旋转?