无法在javascript中解析多个json行

时间:2014-01-26 06:18:38

标签: javascript php json twitter twitter-oauth

我正在使用twitterapi获取php中的好友列表,我将结果编码为json数组,但是我无法解析javascript中的json数组。我已经验证了php生成的json数组及其有效的json阵列。以下是我的代码。

PHP

$friends = array();
$friend_list = array();
$myfriend = array();
$connection = new TwitterOAuth($CONSUMER_KEY, $CONSUMER_SECRET,oauth_token,oauth_token_secret);
 $friends =$connection->get("https://api.twitter.com/1.1/friends/list.json?cursor=-1&screen_name=twitterapi&skip_status=true&include_user_entities=false&count=200);

foreach($friends as $friend) {
           if(!empty($friend))
           {
           foreach($friend as $value)
           {
                $friend_list['id']=$value->id; 
                $friend_list['screen_name']= $value->screen_name;
                $friend_list['name']= $value->name;
                $friend_list['profile_image_url']= $value->profile_image_url;
                $friend_list['location']= $value->location;
                array_push($myfriend, $friend_list);

            }

           }
       } 

  $newarray = json_encode($myfriend);

的JavaScript

<script>
var obj1 = JSON.parse('<?php echo $newarray ;?>');

console.log(obj1); // am not getting anything in console
</script>

EDITED

echo $newarray;

的输出
[
    {
        "id": 50393960,
        "screen_name": "BillGates",
        "name": "Bill Gates",
        "profile_image_url": "http://pbs.twimg.com/profile_images/1884069342/BGtwitter_normal.JPG",
        "location": "Seattle, WA"
    },
    {
        "id": 141527741,
        "screen_name": "prakashraaj",
        "name": "Prakash Raj",
        "profile_image_url": "http://pbs.twimg.com/profile_images/2951815972/ab32fb806b480d0dc761805ae4ef9775_normal.jpeg",
        "location": "india"
    },
    {
        "id": 88856792,
        "screen_name": "aamir_khan",
        "name": "Aamir Khan",
        "profile_image_url": "http://pbs.twimg.com/profile_images/2254031972/_MG_2190_normal.jpeg",
        "location": "Mumbai"
    },
    {
        "id": 107318424,
        "screen_name": "bipsluvurself",
        "name": "Bipasha Basu",
        "profile_image_url": "http://pbs.twimg.com/profile_images/419745345178832896/8JvqwEM9_normal.jpeg",
        "location": "Mumbai, India"
    }
]

请帮助,我坚持这个

2 个答案:

答案 0 :(得分:1)

您可以直接输出json:

更改为:

var obj1 = <?php echo $newarray ;?>;

例如:

<?php
$newarray = json_encode(array('name' => 'srain'));
?>
var obj1 = <?php echo $newarray ;?>;

将输出:

  var obj1 = {"name":"srain"};

更新

如果您的js脚本与php代码不在同一个文件中,$newarray将为空。

答案 1 :(得分:0)

如果没有关于如何验证json数组的信息,这是我可以推荐的。将您的JavaScript更改为:

<script>
var jsonString = '<?php echo $newarray ;?>';
console.log(jsonString);
var obj1 = JSON.parse(jsonString);
console.log(obj1); // am not getting anything in console
</script>

您可以在javascript控制台中查看jsonString的内容。这应该会给你一些关于出了什么问题的提示。

注意:您从twitter获取JSON内容,将其转换为PHP数据结构并将其转换回JSON。将JSON字符串从twitter发送到javascript更有效 - 如果不需要过滤/更改twitter返回的数据。