![](/img/trans.png)
[英]JSON.parse is not working for converting JSON string to JSON object
[英]JSON.parse not working for changing a string into an object
我有一个弦
{ city : Chicago , country : us , name : Somebody , plan : quarter90wtrial },{ city : New York , country : us , name : Somebody , plan : quarter90wtrial },{ city : Portland , country : us , name : Somebody , plan : quarter90wtrial },{ city :null, country :null, name : Somebody , plan : quarter90wtrial },{ city : Mexico City , country : mx , name : Aaron , plan : quarter90wtrial },{ city : Boston , country : us , name : Somebody , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Somebody , plan : quarter90wtrial },{ city : London , country : gb , name : Aaron , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Aaron , plan : quarter90wtrial },{ city : Chicago , country : us , name : Aaron , plan : quarter90wtrial }
我想做的就是将这个字符串变成一个对象,在其中可以迭代并打印出每个城市,国家和名称。 到目前为止,我已经弄清楚了如何分割字符串以分别打印出每一行。
str = str.split('},{');
for(var i =0; i < str.length; i++)
{
alert(str[i]);
}
我不知道如何将字符串转换为可以在其中打印城市,国家/地区,名称等的对象。
您有正确的最初想法。
但是,在split方法之后,您仍然需要像这样映射每对key:value
:
var str = '{ city : Chicago , country : us , name : Somebody , plan : quarter90wtrial },{ city : New York , country : us , name : Somebody , plan : quarter90wtrial },{ city : Portland , country : us , name : Somebody , plan : quarter90wtrial },{ city :null, country :null, name : Somebody , plan : quarter90wtrial },{ city : Mexico City , country : mx , name : Aaron , plan : quarter90wtrial },{ city : Boston , country : us , name : Somebody , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Somebody , plan : quarter90wtrial },{ city : London , country : gb , name : Aaron , plan : quarter90wtrial },{ city : Los Angeles , country : us , name : Aaron , plan : quarter90wtrial },{ city : Chicago , country : us , name : Aaron , plan : quarter90wtrial }'; var result = str.split('},{').map(function(itemStr) { var itemObj = {}; // here we map each "key:value" pair itemStr.replace(/.*?(\\w+) *: *(.*?) *[,}]/g, function(match, key, val) { itemObj[key] = val; }); return itemObj; }); console.log(result)
您可以在此处查看正则表达式的工作方式: https : //regex101.com/r/E5tg26/1
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.