我如何从openlibrary api解析Json数据?(正确)
How do i parse Json data from openlibrary api? (properly)
如果有人回答了,请原谅。我已经看到了关于json数据和openlibrary的各种答案
到目前为止,我从openlibrary获得的json数据和我在示例中看到的json数据似乎在格式
上有所不同我的问题是,使用php(或javascript)我如何得到数据到一个数组或单独的变量,并把它们放入mysql数据库。
- 对上一个问题的补充-我想将原始数据显示如下:
标题:书的标题作者:著书者Isbn: Isbn号等。
然后将这些详细信息放入mysql数据库
[Update 2015-011-07]现在我已经收到了答案,我已经更新了下面的代码来展示它应该是什么样子。下面的代码将从openlibrary请求json数据,它将作为字符串返回。$url中的ISBN号只是用于测试,所以无论如何都要更改它。
<?php
$url ="https://openlibrary.org/api/books?bibkeys=ISBN:0789721813&jscmd=details&format=json";
$headers = array(
"Content-type: application/json;charset='"utf-8'"",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: '"run'""
);
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($cURL);
foreach (json_decode($result, true) as $book)
{
printf("'nISBN: %s'ttitle: %s'tauthor: %s", $book['details']['isbn_10'][0], $book['details']['title'], $book['details']['contributions'][0]);
}
curl_close($cURL);
?>
加载页面后显示如下:
ISBN: 0789721813 title: Red Hat Linux author: Hellums, Duane
默认情况下,cURL
自动输出传输。您的代码只显示json内容,但curl_exec($cURL)
返回1或0,如果出现问题,而不是json内容。这就是为什么你无法得到你想要的数组或对象与json_decode
, JSON字符串不是在$result
变量。
要获得你想要的,你需要设置另一个cURL选项:
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
这样,curl_exec($cURL)
将以字符串形式返回传输,并且不再自动输出。
curl_exec
的返回值请参考PHP手册
那么你只需要使用json_decode
:
foreach (json_decode($result, true) as $book) {
printf("'nISBN: %s'ttitle: %s'tauthor: %s", $book['details']['isbn_10'][0], $book['details']['title'], $book['details']['contributions'][0]);
}
这可能会有帮助
echo 'title : '.$book['details']['title'].'<br />';
echo 'subtitle : '.$book['details']['subtitle'].'<br />';
echo 'lc_classifications : '.$book['details']['lc_classifications'][0].'<br />';
echo 'latest_revision : '.$book['details']['latest_revision'].'<br />';
echo 'edition_name : '.$book['details']['edition_name'].'<br />';
echo 'languages : '.$book['details']['languages'][0]['key'].'<br />';
echo 'subjects : '.$book['details']['subjects'][0].'<br />';
echo 'location : '.$book['details']['location'][0].'<br />';
echo 'type : '.$book['details']['type']['key'].'<br />';
echo 'publish_country : '.$book['details']['publish_country'].'<br />';
echo 'other_titles : '.$book['details']['other_titles'][0].'<br />';
echo 'publishers : '.$book['details']['publishers'][0].'<br />';
echo 'last_modified : '.$book['details']['last_modified']['value'].'<br />';
echo 'key : '.$book['details']['key'].'<br />';
echo 'authors : '.$book['details']['authors'][0]['name'].'<br />';
echo 'publish_places : '.$book['details']['publish_places'][0].'<br />';
echo 'pagination : '.$book['details']['pagination'].'<br />';
echo 'works : '.$book['details']['works'][0]['key'].'<br />';
echo 'isbn 10 : '.$book['details']['isbn_10'][0].'<br />';
相关文章:
- 从查询字符串参数推断出正确的数据类型
- 元素的内容必须由格式正确的字符数据或标记组成
- Ajax请求返回空的数据字符串,但首先得到了正确的数据
- Ajax正确发布表单,但不会返回成功数据
- 如何将正确的数据格式从SQL传递到PHP
- 如何正确地将数据发送到打开的Firefox侧边栏
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- Stringify JavaScript对象Not提供正确的数据
- 如何正确处理依赖ViewChild和Angular 2中可观察到的数据的组件上的更改检测
- 如何正确地将数据从自定义服务传递到角度控制器
- MVC5:通过 Ajax 发布 JSON 时未正确将数据传递到控制器
- Angular2 发布请求未向服务器发送正确的数据
- 如何在 jQuery.post() 中将字符串变量作为数据正确计算
- 无法将数据正确附加到JS数组变量
- & lt; select>下拉输出MYSQL数据正确使用JS函数
- 如何为用户输入的数据正确设置对象数组
- 我如何从openlibrary api解析Json数据?(正确)
- 我如何编码/解码文件后,通过javascript读取它,并通过ajax传递文件数据正确
- 通过AJAX检索PHP JSON数据-正确的数据请求结构