【问题标题】:How to extract JSON string with commas?如何用逗号提取 JSON 字符串?
【发布时间】:2015-05-26 13:58:33
【问题描述】:

我有 JSON 数据:

"geometry":{"type":"Point","coordinates":[95.9174,3.8394,59]},"id":"us10002b0v"

我需要提取coordinates 中以逗号分隔的每个值。在 PHP 中我会做extract(",",$geometry[coordinates]);。 JavaScript中是否有可能这样做?

从这里获取 Json:http://earthquake.usgs.gov/earthquakes/feed/geojsonp/2.5/week

这是我的代码:

google.maps.event.addDomListener(window, 'load', function() {
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: { lat: 7.8, lng: 98.3},
    zoom: 4,
    styles: mapStyle
  });

  map.data.setStyle(styleFeature);

    infowindow = new google.maps.InfoWindow({
        content: '<div class = "corp" style="width: 260px; height: 200px">' + '</div>'
    })


//InfoWindow
var infowindow = new google.maps.InfoWindow();
google.maps.event.addListener(map,'click',function() {
        infowindow.close();
});
map.data.addListener('click', function(event) {
    var place = event.feature.getProperty('place');
    var mag = event.feature.getProperty('mag');
    var depth = event.feature.getProperty('geometry');//I need the depth from this line which is arrayed
    var link = event.feature.getProperty('url');
    var jsonTime = event.feature.getProperty('time');
    var humanTime = new Date('jsonTime');


    infowindow.setContent('<div><h3>'+place+'</h3><p>Mag: '+mag+'<br />Depth '+depth+'<br />Time : '+humanTime+'<br /><a href="'+link+'" target="_blank">More</a></p></div>');
    infowindow.setPosition(event.feature.getGeometry().get());
    infowindow.setOptions({pixelOffset: new google.maps.Size(0,-30)});
    infowindow.open(map);
});

【问题讨论】:

  • 如果你解析json,那将变成一个普通的javascript数组,不需要直接处理json字符串的逗号。
  • 它只是一个数组。 data['geometry']['coordinates'][1] -&gt; 3.83...
  • JSON.parse。将其转换为对象,然后就可以访问数组coordinates
  • 您发布的不是 JSON,它周围缺少括号

标签: javascript arrays json extract


【解决方案1】:

是的,您可以将它们作为数组值获取:

var my_json = '{"geometry":{"type":"Point","coordinates":[95.9174,3.8394,59]},"id":"us10002b0v"}';
var my_obj = JSON.parse(my_json);
var lat = my_obj.geometry.coordinates[0];
var lng = my_obj.geometry.coordinates[1];
console.log( lat ); //95.9174
console.log( lng ); //3.8394

【讨论】:

  • 您从 javascript 对象开始,而不是 JSON 字符串。您需要先解析 JSON。
  • @bhspencer 这取决于 OP 如何获取他的 JSON。如果这是硬编码在 JS 文件中,他不需要调用 parse 方法。只需在他的代码周围添加括号。
  • OP 说他们有 JSON。您的答案中没有 JSON,只是一个对象文字。
  • @antyrat 我有:Uncaught SyntaxError: Unexpected token u。请提出建议。
  • @Wilf here jsfiddle.net/y1otpozr 您将看到从您提供的 URL 获取所有坐标(在浏览器控制台中)的示例。
【解决方案2】:

你可以使用

var myObject = JSON.parse("<your-json-string>");

这会将您的 JSON 解析为一个 JavaScript 对象,您可以以通常的方式遍历该对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多