繁体   English   中英

JSON.parse无法将字符串更改为对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM