0

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

4 回答 4

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 将返回对象而不是数组

于 2013-05-18T05:29:45.880 回答
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 的 url,您只需按照我的示例进行建模。

顺便一提:

json_decode($geolocatorresponse, true);

添加 true 使其以 PHP 数组格式为您提供信息。否则,您将其作为对象来获取,如果您使用对象,则您只能靠自己,因为我还没有深入研究它们。

于 2013-05-18T05:22:14.993 回答
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 文件

于 2013-05-18T05:32:29.827 回答
0

不完全确定你在追求什么,但如果你运行的是相对较新的 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"}}
于 2013-05-18T05:36:21.733 回答