循环json的问题

时间:2017-02-24 09:27:27

标签: php json loops

这里我有一个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;

}

2 个答案:

答案 0 :(得分:1)

如果您将json_decodetrue一起使用,则返回的值将是数组,而不是对象。 因此,您将无法在此处使用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的名字并没有这样做。我尝试了不同的东西,但仍然无法正常工作。

你能给我一些反馈吗?

对不起家伙们这么糟糕。