Search code examples
phpjsonstringify

Stringified JSON to PHP Object


I have this JSON object:

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "0eb3d8a7d9afa466766e90b47f2bd785",
      "type": "Feature",
      "properties": {
        "feature-description": "<div id=\"content\">html content here</div>"
      },
      "geometry": {
        "coordinates": [
          [
            [
              144.87452272951856,
              -37.72702750630904
            ],
            [
              145.00292543948336,
              -37.78131678501029
            ],
            [
              145.12926821291518,
              -37.732458226660285
            ],
            [
              145.11278872073137,
              -37.70801684893612
            ],
            [
              144.9184680420177,
              -37.72431199679091
            ],
            [
              144.87452272951856,
              -37.72702750630904
            ]
          ]
        ],
        "type": "Polygon"
      }
    }
  ]
}

If I JSON.stringify it and try to decode in PHP:

$jsonString = '"{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"id\": \"0eb3d8a7d9afa466766e90b47f2bd785\",\n      \"type\": \"Feature\",\n      \"properties\": {\n        \"feature-description\": \"<div id=\"content\">html content here</div>\"\n      },\n      \"geometry\": {\n        \"coordinates\": [\n          [\n            [\n              144.87452272951856,\n              -37.72702750630904\n            ],\n            [\n              145.00292543948336,\n              -37.78131678501029\n            ],\n            [\n              145.12926821291518,\n              -37.732458226660285\n            ],\n            [\n              145.11278872073137,\n              -37.70801684893612\n            ],\n            [\n              144.9184680420177,\n              -37.72431199679091\n            ],\n            [\n              144.87452272951856,\n              -37.72702750630904\n            ]\n          ]\n        ],\n        \"type\": \"Polygon\"\n      }\n    }\n  ]\n}"';

$json = json_decode( $jsonString );
echo gettype($json); // string

I still get a string, instead of an object. What am I doing wrong?


Solution

  • You just added an extra double quotes " at the start and end. Just remove those and it'll work as you expected.

    <?php
    $jsonString = '{"type":"FeatureCollection","features":[{"id":"0eb3d8a7d9afa466766e90b47f2bd785","type":"Feature","properties":{"feature-description":"<div id=\"content\">html content here</div>"},"geometry":{"coordinates":[[[144.87452272951856,-37.72702750630904],[145.00292543948336,-37.78131678501029],[145.12926821291518,-37.732458226660285],[145.11278872073137,-37.70801684893612],[144.9184680420177,-37.72431199679091],[144.87452272951856,-37.72702750630904]]],"type":"Polygon"}}]}';
    $json = json_decode( $jsonString );
    echo gettype($json); // object
    

    WORKING DEMO: https://3v4l.org/N56DS