这里我有一个json,我在向twitter API发出请求后得到了json。我已经看到了循环json的不同工作示例。即使我在另一个项目中也这样做了。但这一次它没有用。
我测试过很多东西。我认为这是正常的,现在还不起作用。变量arrayFriends甚至没有被使用。我正在测试一些动作。
不知道我失败的确切位置。我想得到一些反馈
谢谢你们!
$url = 'https://api.twitter.com/1.1/friends/ids.json';
$getfield = '?screen_name=J7mb0';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$json = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(true, array(CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem'));
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(true, array(CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem'));
$arrayFriends = var_dump(json_decode($json, true, 512, JSON_BIGINT_AS_STRING));
$json = json_decode($json, true);
echo $json;
foreach($json->ids as $obj){
echo $obj->ids;
}
答案 0 :(得分:1)
如果您将json_decode与true
一起使用,则返回的值将是数组,而不是对象。
因此,您将无法在此处使用property-access方法:
foreach($json->ids as $obj){
您必须使用数组访问方法:
foreach($json['ids'] as $obj){
或者,在解码时更改参数,以便获得一个对象:
$json = json_decode($json, false);
// or just simply:
// $json = json_decode($json);
// since the second parameter defaults to FALSE
此外,$arrayFriends
将保持为空,因为var_dump 根本不会返回任何内容。
// Change this:
// $arrayFriends = var_dump(json_decode($json, true, 512, JSON_BIGINT_AS_STRING));
// ...to this:
$arrayFriends = json_decode($json, true);
答案 1 :(得分:0)
有效!尝试不同的东西后,它开始工作。
实际上我正在尝试访问另一个json,但这不起作用。它是相同的应用程序,但内容更多。
$user = 'seyroku';
$url = 'https://api.twitter.com/1.1/friends/ids.json';
$getfield = '?screen_name='.$user.'';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$json = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(true, array(CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem'));
$arrayFriends = json_decode($json, true,512,JSON_BIGINT_AS_STRING);
foreach($arrayFriends['ids'] as $obj){
echo $obj,",";
$url2 = 'https://api.twitter.com/1.1/users/lookup.json';
$getfield2 = '?user_id='.$obj.'';
$json2 = $twitter->setGetfield($getfield2)
->buildOauth($url2, $requestMethod)
->performRequest(true, array(CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem'));
echo $twitter->setGetfield($getfield2)
->buildOauth($url2, $requestMethod)
->performRequest(true, array(CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem'));
$json3 = json_decode($json2, true);
foreach ($json3['name'] as $nombre) {
echo $nombre,",";
}
/* $sql = "INSERT INTO friendtest (user, friends)
VALUES ('$user' , '$obj' )";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}*/
}
每个第一个正确地返回我的身份。但是我希望第二个给我这个id的名字并没有这样做。我尝试了不同的东西,但仍然无法正常工作。
你能给我一些反馈吗?
对不起家伙们这么糟糕。