将 JSON 字符串化为 PHP 对象
Stringified JSON to PHP Object
我有这个 JSON 对象:
{
"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.stringify
它并尝试在 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
我仍然得到 string
,而不是 object
。我做错了什么?
您刚刚在开头和结尾添加了 一个额外的双引号 "
。只需删除它们,它就会按您预期的那样工作。
<?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
工作演示: https://3v4l.org/N56DS
您可能不想将其字符串化。你可以通过 json_decode 传递它,它会起作用:
$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, true);
echo gettype($json); // string
var_dump($json);
输出
array(2) {
["type"]=>
string(17) "FeatureCollection"
["features"]=>
array(1) {
[0]=>
array(4) {
["id"]=>
string(32) "0eb3d8a7d9afa466766e90b47f2bd785"
["type"]=>
string(7) "Feature"
["properties"]=>
array(1) {
["feature-description"]=>
string(41) "<div id="content">html content here</div>"
}
["geometry"]=>
array(2) {
["coordinates"]=>
array(1) {
[0]=>
array(6) {
[0]=>
array(2) {
[0]=>
float(144.87452272952)
[1]=>
float(-37.727027506309)
}
[1]=>
array(2) {
[0]=>
float(145.00292543948)
[1]=>
float(-37.78131678501)
}
[2]=>
array(2) {
[0]=>
float(145.12926821292)
[1]=>
float(-37.73245822666)
}
[3]=>
array(2) {
[0]=>
float(145.11278872073)
[1]=>
float(-37.708016848936)
}
[4]=>
array(2) {
[0]=>
float(144.91846804202)
[1]=>
float(-37.724311996791)
}
[5]=>
array(2) {
[0]=>
float(144.87452272952)
[1]=>
float(-37.727027506309)
}
}
}
["type"]=>
string(7) "Polygon"
}
}
}
}
我有这个 JSON 对象:
{
"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.stringify
它并尝试在 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
我仍然得到 string
,而不是 object
。我做错了什么?
您刚刚在开头和结尾添加了 一个额外的双引号 "
。只需删除它们,它就会按您预期的那样工作。
<?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
工作演示: https://3v4l.org/N56DS
您可能不想将其字符串化。你可以通过 json_decode 传递它,它会起作用:
$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, true);
echo gettype($json); // string
var_dump($json);
输出
array(2) {
["type"]=>
string(17) "FeatureCollection"
["features"]=>
array(1) {
[0]=>
array(4) {
["id"]=>
string(32) "0eb3d8a7d9afa466766e90b47f2bd785"
["type"]=>
string(7) "Feature"
["properties"]=>
array(1) {
["feature-description"]=>
string(41) "<div id="content">html content here</div>"
}
["geometry"]=>
array(2) {
["coordinates"]=>
array(1) {
[0]=>
array(6) {
[0]=>
array(2) {
[0]=>
float(144.87452272952)
[1]=>
float(-37.727027506309)
}
[1]=>
array(2) {
[0]=>
float(145.00292543948)
[1]=>
float(-37.78131678501)
}
[2]=>
array(2) {
[0]=>
float(145.12926821292)
[1]=>
float(-37.73245822666)
}
[3]=>
array(2) {
[0]=>
float(145.11278872073)
[1]=>
float(-37.708016848936)
}
[4]=>
array(2) {
[0]=>
float(144.91846804202)
[1]=>
float(-37.724311996791)
}
[5]=>
array(2) {
[0]=>
float(144.87452272952)
[1]=>
float(-37.727027506309)
}
}
}
["type"]=>
string(7) "Polygon"
}
}
}
}