在我的案例中,从JSON检索部分的最快方法

时间:2014-03-24 12:01:54

标签: php json strstr

现在,我使用 strstr 从外部JSON文件中获取数据。我不确定它是否是我想要的最快速的方式,我无法测试,因为 json_decode 不能在我的代码中工作。< / p>

$before = '"THIS":"';
$after = '","date"';
$data = strstr(substr($url, strpos($url, $before) + strlen($before)), $after, true)

和json_decode:

$address = file_get_contents('http://json.link/?something=Hello');
$data = json_decode($address);
echo $data->data->THIS;

现在,当我用第二个代码替换第一个代码时,我得到:

  

注意:尝试获取非对象的属性

我的所有代码:

$text = "a lot of text";
$text_split = array(0 => '');
$number = 0;
$words = explode(' ', $text);
foreach($words as $word)
{
    if(strlen($text_split[$number]) + strlen($word) + 1 > 500)
    {
        ++$number;
        $text_split[$number] = '';
    }
    $text_split[$number] .= $word.' ';
}
foreach($text_split as $texts)
{
    $text_encode = rawurlencode($texts);
    $address = file_get_contents('http://json.link/?something='.$text_encode);
    $data = json_decode($address);
    echo $data->data->THIS;
}

在这种情况下该怎么办?继续使用strstr或替换所有代码以使用json_decode(可能因为执行时间更快?)?如果第二个选项,我怎么能让json_decode在这里工作?谢谢!

...抱歉英语不好。

LE 如果我将$address = file_get_contents('http://json.link/?something='.$text_encode);替换为$address = file_get_contents('http://json.link/?something=Hello');,我会获得有效的结果#34; Hello&#34;文字但是10次。我猜是因为它在foreach中。

2 个答案:

答案 0 :(得分:0)

json_decode是使用JSON数据的建议方法。在这里,我认为您正在尝试访问JSON对象中的无效属性。

$data = json_decode($address);
echo $data->data->THIS;

我想你需要$data->date而不是$data-data

答案 1 :(得分:0)

你必须像这样访问特定的键值

$json = '{"success":true,"msg":"success","data":{"THIS":"thing I need","date":"24.03.2014","https":false}}';

$d=json_decode($json,true);

echo $d['data']['THIS'];