我在 PHP 中有以下 JSON 数据:
"data": {
"visible": false,
"test": "test1",
"gagnante": false,
"create": "2013-05-17 21:53:39",
"update": 1368820419
}
但是,我只想获得该create
领域。像这样:
"data": {
"create": "2013-05-17 21:53:39"
}
我该怎么做?
使用json_decode()对 json 进行解码,然后根据需要进行解析
就像是
<?php
$json = ' "data": {
"visible": false,
"test": "test1",
"gagnante": false,
"create": "2013-05-17 21:53:39",
"update": 1368820419
}'
$array = json_decode($json, true);
echo $array['create'];
?>
不要忘记包含第二个参数,true
否则 json_decode 将返回对象而不是数组
$geolocatorrequest = 'http://maps.googleapis.com/maps/api/geocode/json?address=' . $urlreadystreetaddress . '&sensor=false';
$geolocatorresponse = file_get_contents($geolocatorrequest);
$geolocatordata = json_decode($geolocatorresponse, true);
然后你可能想看看你有什么样的结构。
echo "<pre>" . print_r($geolocatorresponse) . "</pre>";
这将向您展示结构,以便您知道您的价值要遵循的数组键路径。由于您未能提供您正在使用的 API 的 url,您只需按照我的示例进行建模。
顺便一提:
json_decode($geolocatorresponse, true);
添加 true 使其以 PHP 数组格式为您提供信息。否则,您将其作为对象来获取,如果您使用对象,则您只能靠自己,因为我还没有深入研究它们。
首先,您的 json 代码要求外部 { } 被视为有效 JSON,现在考虑到您可以将数据保存在文件中:
$json = json_decode(file_get_contents('myFile.json'), true);
$createField = $json['data']['create'];
// use array() instead of [] for php 5.3 or lower
$newJson = ["data" => ["create" => $createField]];
$newJson = json_encode($newJson);
file_put_contents('myNewFile.json', $newJson);
这将从完整的 json 中获取内容并将其转换为关联数组,然后您可以创建一个新数组,传递您想要的变量并再次以 json 格式编码数据,最后一行保存新的 json 文件
不完全确定你在追求什么,但如果你运行的是相对较新的 PHP 版本,你可以使用 json_encode 和 json_decode。
我正在运行 php 5.3.2 或类似的东西,这就是我的做法......
ALSO - 不要听这些其他评论......对象几乎总是比数组恕我直言。
<?php
echo "<pre>";
$array['data'] = array(
'visible' => false,
'test' => 'test1',
'gagnante' => false,
'create' => '2013-05-17 21:53:39',
'update' => 1368820419
);
echo "From array to json...<br><br>";
$json = json_encode($array);
echo "<br><br>{$json}<br><br>";
echo "<br><br>back out to an obj...<br><br>";
$obj = json_decode($json);
print_r($obj);
echo "<br><br>get just the field you're after<br><br>";
$new_array['data'] = array(
'create' => $obj->data->create
);
echo "Back out to json....<br><br>";
echo json_encode($new_array);
echo "</pre>";
?>
这会产生
From array to json...
{"data":{"visible":false,"test":"test1","gagnante":false,"create":"2013-05-17 21:53:39","update":1368820419}}
back out to an obj...
stdClass Object
(
[data] => stdClass Object
(
[visible] =>
[test] => test1
[gagnante] =>
[create] => 2013-05-17 21:53:39
[update] => 1368820419
)
)
get just the field you're after
Back out to json....
{"data":{"create":"2013-05-17 21:53:39"}}