我在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"
}
我该怎么做?
答案 0 :(得分:2)
使用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将返回对象而不是数组
答案 1 :(得分:0)
$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的网址,因此您需要在我的示例之后进行建模。
顺便说一下:
json_decode($geolocatorresponse, true);
添加true会使它以PHP数组格式提供信息。否则你把它作为对象得到它,如果你选择对象,你就可以自己动手了,因为我还没有深入研究它们。
答案 2 :(得分:0)
首先,你的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文件< / p>
答案 3 :(得分:0)
不完全确定你所追求的是什么,但是如果你运行的是相对较新版本的PHP,你可以使用json_encode和json_decode。
我正在运行php 5.3.2或类似的东西,这就是我做的方式....
另外 - 不要听这些其他评论......对象几乎总是比数组恕我直言。
<?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"}}