如何处理JSON文本输出?

时间:2015-04-08 21:57:13

标签: php jquery json rest

我第一次使用API​​。使用cURL,我可以从API获取一个令牌,并使用它来获取JSON格式的文本中的响应。这是我的代码:

<?php
$host = 'HOST';
$username = 'USERNAME';
$password = 'PASSWORD';
$payloadName = 'grant_type=client_credentials';
$process = curl_init($host);
curl_setopt($process, CURLOPT_HTTPHEADER, array('application/x-www-form-urlencoded'));
curl_setopt($process, CURLOPT_HEADER, 1);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($process, CURLOPT_SSL_VERIFYHOST,  2);
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, $payloadName);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
$str = ''.$return.'';
$start  = strpos($str, '{');
$end    = strpos($str, '}', $start - 1);
$length = $end - $start;
$json = substr($str, $start - 1, $length + 2);


$results = json_decode($json, true);
$token = $results['access_token'];
$type = $results['token_type'];


$curl = curl_init( "API URL?fields=title,author" );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $token) );
$return2 = curl_exec( $curl );

?>

我的问题是解码令牌的JSON似乎工作正常,但$ return2的值只是“1”或“真”,所以如果我使用相同的方法则无法解析。

这是输出文本结果,例如:

  

{“id”:xxxxxx,“title”:“战狗”,“作者”:“熊,格雷格,1951年 - ”}

到网页,那么如何捕获输出到我可以使用的变量(服务器端或客户端?)?

1 个答案:

答案 0 :(得分:1)

JSON是一种原生的Javascript表示法。事实上,它代表&#34; JavaScript Object Notation&#34;。例如,

var jsonobj = {"id":123456,"title":"War dogs","author":"Bear, Greg, 1951-"};

是有效的JS。它会产生一个你可以使用的对象。

alert(jsonobj.title); //alerts "War Dogs"

如何获得变量集,我不确定基于您的示例。如果变量$json在PHP文件的HTML部分中可用,则可以在<script>部分中执行以下操作:

var jsonobj = <?php echo $json; ?>;