您好我想从一个字符串中获取特定于javascript的值,该字符串具有此格式
[
{
"st_asgeojson": "{\"type\":\"MultiLineString\",\"coordinates\":[[[23.4582348,37.5062675],[23.4577141,37.5066109],[23.4572601,37.5070038],[23.4566746,37.507301],[23.455698,37.5076256],[23.4549737,37.5079214],[23.4545445,37.5080235],[23.4538579,37.5078873],[23.4325504,37.5231202],[23.4324646,37.5234265],[23.4324646,37.5236308],[23.4326363,37.5237669]]]}"
},
{
"st_asgeojson": "{\"type\":\"MultiLineString\",\"coordinates\":[[[23.4568043,37.5042114],[23.4566078,37.5040436],[23.4567394,37.5038528],[23.4571075,37.5037422],[23.4575424,37.5035515],[23.4580841,37.5031548],[23.4589958,37.5027237]]]}"
}
]
从这个字符串我想创建一个新的2d数组,在这个数组中我想只放置坐标。
例如,我希望第一行有st_asgeojson
个坐标[23.4582348,37.5062675],....,[23.4326363,37.5237669]
,第二行有st_asgeojson
个坐标[23.4568043,37.5042114],[23.4566078,37.5040436],......,[23.4589958,37.5027237]
。
这可以吗?
我尝试str.split("[ ]")
,但显示的方法与我第一次使用的字符串相同。
答案 0 :(得分:0)
原始字符串是JSON,因此您首先必须将其转换为JSON.parse()
的数组:
var arr = JSON.parse(str);
然后st_asgeojson
属性的值是另一个JSON编码的对象,所以你也必须解析它:
var first_coords = JSON.parse(arr[0].st_asgeojson).coordinates[0][0];
var second_coords = JSON.parse(arr[1].st_asgeojson).coordinates[0][0];
字符串中没有[ ]
,所以我不确定你期望str.split('[ ]')
达到什么目的。你的意思是使用正则表达式,str.split(/ /)
将它分割成空格吗?
要使用循环来完成所有操作:
var arrLeng = arr.length;
for (var i = 0; i < arrLeng; i++) {
var coordArray = JSON.parse(arr[i].st_asgeojson).coordinates;
var coordArrLeng = coordArray.length;
for (var j = 0; j < coordArrLeng; j++) {
var coords = coordArray[0][0];
var coordLeng = coords.length;
for (var k = 0; k < coordLeng; k++) {
alert(coords[k]);
}
}
}