parse json with php


parse json with php

我是一个php新手,有一些问题理解如何解析json api返回。下面是json的一个片段:

{
  "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…

<?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'仍然未填充;所以,我知道我没有正确地访问那些子键。获取这些元素的正确语法是什么?

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

title和description位于子元素"book_details"中,该子元素本身也是一个数组

应为

$r['book_details'][0]['title']

$r['book_details'][0]['description']

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

更新:添加数组索引

$p从何而来?

您想要类似$r->book_details[0]->description的东西来获取book_details数组中第一项的描述。

为什么$foo[bar]是错误的?

总是在字符串字面量数组索引周围使用引号。例如,$foo['bar']是正确的,而$foo[bar]则不是。但是为什么呢?在旧脚本中经常会遇到这种语法:

<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>

来源:php.net

好吧,{这意味着你有一个对象。也就是说,你通过$var->name访问它[是一个数组,所以你可以循环通过它,如果你有东西在里面或者你访问的值$var['name']