首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP解码数据库中的JSON字符串返回NULL

PHP解码数据库中的JSON字符串返回NULL
EN

Stack Overflow用户
提问于 2017-06-30 01:21:26
回答 1查看 162关注 0票数 0

我有自己的网站,使用来自Google CSE (自定义搜索引擎)的API,因为Google限制每天对免费用户进行100次调用,所以我想将Google API中的JSON结果存储到我的数据库中,以保存我的每天100次调用配额,所以当API调用时,我只是从我的数据库中获得。

我想把这个JSON从我的数据库打印到一个循环中

代码语言:javascript
复制
<?php
$search = mysql_query("SELECT * FROM jsondata WHERE id_jsondata = 1");
$jsondata = mysql_fetch_assoc($search);
$json = json_decode($jsondata['jsondata'], true);
foreach ($json as $data) {
echo $data['link'];
}
?>

但是它没有发生,当我尝试var_dump($json)时,它是空的。

JSON在我的数据库中转换为字符串,如下所示。

[{"kind":"customsearch#result","title":"Tekken 7 - Full-Length SDCC 2014 Trailer - YouTube","htmlTitle":"<b>Tekken 7</b> - Full-Length SDCC 2014 <b>Trailer</b> - YouTube","link":"https://www.youtube.com/watch?v=yTm6BV8RT9A","displayLink":"www.youtube.com","snippet":"Jul 25, 2014 ... Check out the full-length Tekken 7 trailer straight from the Bandai Namco Games Fighting Game Panel at San Diego Comic-Con 2014! Followu00a0...","htmlSnippet":"Jul 25, 2014 <b>...</b> Check out the full-length <b>Tekken 7 trailer</b> straight from the Bandai Namco Games <br> Fighting Game Panel at San Diego Comic-Con 2014! Follow&nbsp;...","cacheId":"MmI6KIqGwI4J","formattedUrl":"https://www.youtube.com/watch?v=yTm6BV8RT9A","htmlFormattedUrl":"https://www.youtube.com/watch?v=yTm6BV8RT9A","pagemap":{"cse_thumbnail":[{"width":"300","height":"168","src":"https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcR-0L7ZLf24Vo2hFNsLE8awRPgmDlwznkynosWn71B-MX0u8-J4ZRuUgBnb"}],"imageobject":[{"url":"https://i.ytimg.com/vi/yTm6BV8RT9A/maxresdefault.jpg","width":"1280","height":"720"}],"person":[{"url":"http://www.youtube.com/user/NamcoBandaiGames"},{"url":"https://plus.google.com/117456562617165336918"}],"metatags":[{"title":"Tekken 7 - Full-Length SDCC 2014 Trailer","theme-color":"#e62117","og:site_name":"YouTube","og:url":"https://www.youtube.com/watch?v=yTm6BV8RT9A","og:title":"Tekken 7 - Full-Length SDCC 2014 Trailer","og:image":"https://i.ytimg.com/vi/yTm6BV8RT9A/maxresdefault.jpg","og:description":"Check out the full-length Tekken 7 trailer straight from the Bandai Namco Games Fighting Game Panel at San Diego Comic-Con 2014! Follow Katsuhiro Harada on T...","al:ios:app_store_id":"544007664","al:ios:app_name":"YouTube","al:ios:url":"vnd.youtube://www.youtube.com/watch?v=yTm6BV8RT9A&feature=applinks","al:android:url":"vnd.youtube://www.youtube.com/watch?v=yTm6BV8RT9A&feature=applinks","al:android:app_name":"YouTube","al:android:package":"com.google.android.youtube","al:web:url":"https://www.youtube.com/watch?v=yTm6BV8RT9A&feature=applinks","og:type":"video","og:video:url":"https://www.youtube.com/embed/yTm6BV8RT9A","og:video:secure_url":"https://www.youtube.com/embed/yTm6BV8RT9A","og:video:type":"text/html","og:video:width":"1280","og:video:height":"720","og:video:tag":"namco bandai games","fb:app_id":"87741124305","twitter:card":"player","twitter:site":"@youtube","twitter:url":"https://www.youtube.com/watch?v=yTm6BV8RT9A","twitter:title":"Tekken 7 - Full-Length SDCC 2014 Trailer","twitter:description":"Check out the full-length Tekken 7 trailer straight from the Bandai Namco Games Fighting Game Panel at San Diego Comic-Con 2014! Follow Katsuhiro Harada on T...","twitter:image":"https://i.ytimg.com/vi/yTm6BV8RT9A/maxresdefault.jpg","twitter:app:name:iphone":"YouTube","twitter:app:id:iphone":"544007664","twitter:app:name:ipad":"YouTube","twitter:app:id:ipad":"544007664","twitter:app:url:iphone":"vnd.youtube://www.youtube.com/watch?v=yTm6BV8RT9A&feature=applinks","twitter:app:url:ipad":"vnd.youtube://www.youtube.com/watch?v=yTm6BV8RT9A&feature=applinks"}],"videoobject":[{"url":"https://www.youtube.com/watch?v=yTm6BV8RT9A","name":"Tekken 7 - Full-Length SDCC 2014 Trailer","description":"Check out the full-length Tekken 7 trailer straight from the Bandai Namco Games Fighting Game Panel at San Diego Comic-Con 2014! Follow Katsuhiro Harada on T...","paid":"False","channelid":"UC_ntXHv-XdKCD7CPynVvnQw","videoid":"yTm6BV8RT9A","duration":"PT3M9S","unlisted":"False","thumbnailurl":"https://i.ytimg.com/vi/yTm6BV8RT9A/maxresdefault.jpg","embedurl":"https://www.youtube.com/embed/yTm6BV8RT9A","playertype":"HTML5 Flash","width":"1280","height":"720","isfamilyfriendly":"True","regionsallowed":"AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH...","interactioncount":"1444296","datepublished":"2014-07-25","genre":"Gaming"}],"cse_image":[{"src":"https://i.ytimg.com/vi/yTm6BV8RT9A/maxresdefault.jpg"}]}}]

JSON字符串太长了,它包含20个数据,所以我移到这里,http://codepad.org/Ib658BDD上面的JSON字符串示例只包含1个数据。

当我将JSON插入我的数据库时,我已经对JSON进行了编码

代码语言:javascript
复制
$json = file_get_contents("https://www.googleapis.com/customsearch/v1?q=Tekken%207&cx=XXX&key=XXX");
$json = json_decode($json, true);
$json = $json['items'];
mysql_query("INSERT INTO jsondata(jsondata) VALUES('".json_encode(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', str_replace("'", "&#39;", $json)))."')");

更新:看起来好像是因为JSON数据现在没有写好,所以我很怀疑要删除数据内部的“(引号),例如

代码语言:javascript
复制
"snippet":"This video was taken from a facebook page, named "Dream Team Gaming"."
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-30 02:02:31

您的json数据是无效和不完整的。必须清除所有错误的反斜杠()并完成数据。如果json字符串无效,则json_decode命令返回null。您可以在http://json.parser.online.fr/上验证json数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44837236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档