Tengo el siguiente json:

[
  {
    "ID": 1,
    "Lat": 39.21988,
    "Lng": 9.124741,
    "Date": "01.01.2020",
    "Time": "08:54:00 AM",
    "Plastic": 0.156,
    "Metal": 0.321,
    "Paper": 0.098,
    "Glass": 0.085
  },
  {
    "ID": 1,
    "Lat": 39.21988,
    "Lng": 9.124741,
    "Date": "01.01.2020",
    "Time": "10:15:23 AM",
    "Plastic": 0.078,
    "Metal": 0.652,
    "Paper": 0.085,
    "Glass": 0.078
  },

Lo intenté:

    var str = JSON.stringify(<?php echo $contents; ?>, null, 2);
    $.each (str, function (i) {
      console.log(str[i]["lat"]);
    });

Pero lo estoy haciendo mal. Sé que no estoy presionando, pero el bucle está mal.

Necesito recorrer esos elementos y necesito que lat+lng se transfiera a una matriz única como

const coords: ["lat, lng", "lat, lng"]
0
rob.m 6 feb. 2020 a las 23:11

2 respuestas

La mejor respuesta

Puedes intentarlo así.

var jsonObj = [
      {
        "ID": 1,
        "Lat": 39.21988,
        "Lng": 9.124741,
        "Date": "01.01.2020",
        "Time": "08:54:00 AM",
        "Plastic": 0.156,
        "Metal": 0.321,
        "Paper": 0.098,
        "Glass": 0.085
      },
      {
        "ID": 1,
        "Lat": 39.21988,
        "Lng": 9.124741,
        "Date": "01.01.2020",
        "Time": "10:15:23 AM",
        "Plastic": 0.078,
        "Metal": 0.652,
        "Paper": 0.085,
        "Glass": 0.078
      }];

var coords = jsonObj.map(function(item) {
    return (item.Lat + "," + item.Lng);
});
console.log(coords); // ["39.21988,9.124741", "39.21988,9.124741"]

Si tiene su JSON como una cadena, puede usar JSON.parse("yourString") para obtener su objeto JSON.

0
Alan Geo Mathew 6 feb. 2020 a las 20:42

No Stringify el JSON si vas a iterar sobre él.

En todo caso, es posible que desee utilizar JSON.parse, ya que podría provenir de PHP como una cadena.

Algo como esto:

var array = <?php echo $contents; ?>;
/// or if it's coming as a string from php
var array = JSON.parse(<?php echo $contents; ?>);

array.forEach((thing) => {
  coords.push({thing['lat'], thing['lng']});
  console.log(thing.lat);
});

0
Marc Farias Jones 6 feb. 2020 a las 20:32