从字符串中提取有效JSON的数组

时间:2016-06-23 12:33:55

标签: javascript arrays json function

var myvar = '
    myname({    "country":{        "cities":[ {"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]   } });';

因此myvar是一个字符串。

如何从citiesArr获取citymyvar个对象?

4 个答案:

答案 0 :(得分:1)

首先删除myname(,最后删除);,然后使用String#replace,使其成为有效的JSON。之后使用JSON.parse方法解析字符串并获取所需的数据。

var myvar = 'myname({    "country":{        "cities":[ {"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]   } });';

console.log(JSON.parse(myvar.replace(/^\s*\w+\(|\);$/g, '')).country.cities);

答案 1 :(得分:1)

这不是一个json对象,它包含一个函数,JSON只是一个javascript对象。

要得到这个,你可能需要使用eval,虽然我不推荐。

var myvar = 'myname({    "country":{        "cities":[ {"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]   } });';

function myname(jsonObj) {
  console.log(jsonObj)
}

eval(myvar); //will log the whole object.

答案 2 :(得分:1)

将你的json改为

var myvar = {" country":{" cities":[{" id":" 3","人口":" 3700"},{" id":" 5","人口":" 3730&#34 ;}]}};

你可以把城市作为myvar.country [" cities"]

答案 3 :(得分:1)

JSON是有效的JavaScript,但并非所有有效的JavaScript都是valid JSON

正如Nina在对该问题的评论中指出的那样,您在问题中粘贴的字符串可能是有效的JavaScript,但它不是有效的JSON。

一旦您纠正了该问题,您可以use this solution to parse your JSON

var myvar = '{"country":{"cities":[{"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]}}';
var theData = JSON.parse(myvar);
  

如何从myvar获取citiesArr城市对象数组?

一旦您使用JSON.parse(...)取回对象,就可以像使用对象一样使用它:



var myvar = '{"country":{"cities":[{"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]}}';
var theData = JSON.parse(myvar);
var cities = theData.country.cities;
console.log(cities);




如果您没有从第三方(如文件或Web服务器)获取字符串,那么您可能需要考虑以正常方式构建对象,而不是尝试使用JSON字符串:

var myvar = {"country":{"cities":[{"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]}};