我有一个存储为字符串的名称值对,我想将其转换为 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/