Home > other >  How to put an array of objects into an object name data for datatables
How to put an array of objects into an object name data for datatables

Time:12-03

I have an array of objects as follows:

[
  {
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [
        137.89094924926758,
        36.93143814715343
      ]
    },
    "properties": {
      "@geometry": "center",
      "@id": "way/323049815",
      "id": "way/323049815",
      "landuse": "winter_sports",
      "name": "糸魚川シーサイドバレースキー場",
      "name:en": "Itoigawa Seaside Valley Ski Resort",
      "name:ja": "糸魚川シーサイドバレースキー場",
      "source": "Bing",
      "sport": "skiing",
      "website": "https://www.seasidevalley.com/",
      "wikidata": "Q11604871",
      "wikipedia": "ja:糸魚川シーサイドバレースキー場"
    },
    
    [snip]

I want to add the above array into a data object in javascript as follows.

{
    "data": [
        //my data here.
    ]
}

I have tried this;

          let mydata = {
            "data": skidata
          }

but is places back slashed a lot like this snippet;

{
    "data": "[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\"...

How do I remove the back slashes in javascript please?

This is the specific code;

            let skidata = JSON.stringify(uniqueFeatures);
    
            let mydata = {
                "data": skidata
            }
            console.log((mydata));

When I console.log skidata, there are no backslashes. When I console.log mydata, back slashes are added, I think. This is a pict of console.log(mydata)

screen shot of console for my data

CodePudding user response:

To remove all the backslashes from a string in JavaScript, you can use the replace method:

const json = '"data": "[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\"...';

const jsonWithoutBackslashes = json.replace(/\\/g, '');

CodePudding user response:

Don't use JSON.stringify(uniqueFeatures).

That turns your object into a string. When you place that string into mydata then, yes, all those double-quotes in the string will be escaped. They must be escaped to ensure the new object contains a valid representation of the string.

Instead of doing that, just use let mydata1 = { "data": uniqueFeatures };.

Demo:

let uniqueFeatures = [{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [
      137.89094924926758,
      36.93143814715343
    ]
  },
  "properties": {
    "@geometry": "center",
    "@id": "way/323049815",
    "id": "way/323049815",
    "landuse": "winter_sports",
    "name": "糸魚川シーサイドバレースキー場",
    "name:en": "Itoigawa Seaside Valley Ski Resort",
    "name:ja": "糸魚川シーサイドバレースキー場",
    "source": "Bing",
    "sport": "skiing",
    "website": "https://www.seasidevalley.com/",
    "wikidata": "Q11604871",
    "wikipedia": "ja:糸魚川シーサイドバレースキー場"
  }
}];

let skidata = JSON.stringify(uniqueFeatures);

let mydata1 = {
  "data": uniqueFeatures
};

let mydata2 = {
  "data": skidata
};

console.log("What you get if you stringify your object:");
console.log(mydata2);

console.log("What you want, instead:");
console.log(mydata1);
<!doctype html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Demo</title>
</head>

<body>

</body>

</html>

Reference: JSON.stringify()

  • Related