首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用php解析json

用php解析json
EN

Stack Overflow用户
提问于 2011-09-09 07:24:52
回答 4查看 441关注 0票数 1

我是一个php newb,在理解如何解析json api返回时遇到了一些问题。下面是json的一个片段:

代码语言:javascript
运行
复制
{
  "results": [
    {
     "list_name": "",
     "display_name": "",
     "updated": "",
     "bestsellers_date": "",
     "published_date": "",
     "isbns": [
      {
       "isbn10": "",
       "isbn13": ""
      },
      {
       "isbn10": "",
       "isbn13": ""
      }
    ],
    "book_details": [
     {
      "title": "Book author",
      "description": "Book description"",
      "contributor": "",
      "author": "Book author",
      "contributor_note": "",
      "price": ,
      "age_group": "",
      "publisher": "",
      "primary_isbn13": "1010101010",
      "primary_isbn10": "1010101010101"
     }
   ],
    "reviews": [
      {
       "book_review_link": "",
       "first_chapter_link": "",
       "sunday_review_link": "",
       "article_chapter_link": ""
     }
   ]
 },

这是我到目前为止拥有的php。

代码语言:javascript
运行
复制
<?php

$json=file_get_contents('the url for the api return');

// create array
$json_a=json_decode($json,true);

foreach($json_a[results] as $r)
{
echo '

List: '.$r[list_name].'
<br />
Title: '.$r[title].'
<br>
Description: '.$r[description].'
<br />
<br />
';
}

?>

我从api得到一个返回值,并且它为'list_name‘提供了正确的值,但是'title’和'description‘仍然没有填充;所以,我知道我没有访问这些子键(?)正确无误。获取这些元素的正确语法是什么?

非常感谢你们在这方面能提供的任何指导。提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-09 09:25:47

标题和描述在一个子元素"book_details“中,这个子元素本身是一个数组

应该是

代码语言:javascript
运行
复制
$r['book_details'][0]['title']

代码语言:javascript
运行
复制
$r['book_details'][0]['description']

只需在PHP中打开错误报告,就会发现您试图访问的索引并不存在。

更新:添加数组索引

票数 0
EN

Stack Overflow用户

发布于 2011-09-09 07:31:11

$p是从哪里来的?

您需要像$r->book_details[0]->description这样的内容来获取book_details数组的第一项的描述。

票数 0
EN

Stack Overflow用户

发布于 2011-09-09 07:36:24

Why is $foo[bar] wrong?

始终使用引号将字符串文字数组索引引起来。例如,$foo‘’bar‘是正确的,而$foobar是错误的。但是为什么呢?在旧脚本中经常会遇到这种语法:

代码语言:javascript
运行
复制
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>

来源: php.net

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

https://stackoverflow.com/questions/7355633

复制
相关文章

相似问题

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