我正在努力了解jQuery,并且非常了解PHP。
我有一个像这样的字符串:
[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]
我正在尝试从question获得答案结果。
不幸的是,我不知道如何将我的字符串变成类似于另一个问题的提问者的内容,即:
var data = [{'donor':'company1', 'web':'http://company1.com', 'amount':5.50},
{'donor':'company2', 'web':'http://company2.com', 'amount':40.00}]
您可以提供任何帮助都很棒。我认为它与地图,关联数组,对象有关,但我只是没有得到它。
提前致谢,我真的很感激!
答案 0 :(得分:0)
您可以使用regex replacemnt将原始字符串转换为所需的字符串:
var s='[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]';
s='[' + s.replace(/\[/g,'{').replace(/\]/g,'}').replace(/=/g,':')
.replace(/"\s/g,'", ').replace(/{(.+?):/g,'{"$1":')
.replace(/;/g,',\r\n') + ']';
此转换的结果是您要获取的字符串,它是对象数组的JSON表示法。
如果您评估此JSON表达式,则会获得对象数组。
如果将这些行添加到上一个脚本的末尾,您将看到长度为2的数组,其中包含JSON表示的对象:
var t = eval(s);
alert(t.length); // output 2, which is the array length
alert(t[0].donor); // outputs company1, which is the donor of the first object in the array
您可以在w3schools try it yourself editor中使用此代码。复制并粘贴此代码:
<html>
<head>
<script type="text/javascript">
var s='[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]';
s='[' + s.replace(/\[/g,'{').replace(/\]/g,'}').replace(/=/g,':')
.replace(/"\s/g,'", ').replace(/{(.+?):/g,'{"$1":')
.replace(/;/g,',\r\n') + ']';
var t = eval(s);
alert("Array length: " + t.length);
alert("1st object donor: " + t[0].donor);
</script>
</head>
<body>
</body>
</html>