Json数据:得到一个字段

时间:2013-05-18 05:06:48

标签: php json

我在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"
}

我该怎么做?

4 个答案:

答案 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"}}