JSON只解码一个数据php

时间:2016-11-23 21:00:24

标签: php json

我有JSON数据:

[
  {
    "title": "red",
  },
  {
    "title": "blue",
  },
  {
    "title": "yellow",
  },

]

我想要第一个数据红色。 我试着用这个

    ...

    $json_output=curl_exec($ch);
    $mydata = json_decode($json_output);

  $result = $mydata->title;

    echo $result[1];

$result = $mydata->title[1];

但是不行。

我如何才能从这个json获得第一个“标题”数据?

3 个答案:

答案 0 :(得分:1)

$json_output=curl_exec($ch);
$mydata = json_decode($json_output);

$result = $mydata[0]->title;
echo $result;

答案 1 :(得分:1)

首先,您的JSON无效。您可以使用this验证程序检查您的JSON是否有效。它应如下所示:

[
  {
    "title": "red"
  },
  {
    "title": "blue"
  },
  {
    "title": "yellow"
  }

]

有两种方法可以访问JSON对象:

  1. 对象数组:

    $mydata = json_decode($json_output);
    $title = $mydata[0]->title; // red
    
  2. 关联数组:

    $mydata = json_decode($json_output, true);
    $title = $mydata[0]['title']; // red
    
  3. 有关详细信息,请参阅json_decode()

答案 2 :(得分:1)

根据PHP的手册,json_decode以适当的PHP类型返回JSON编码的值。值true,false和null分别返回为TRUE,FALSE和NULL。如果无法解码JSON或编码数据深于递归限制,则返回NULL。

<?php
    $json_output = '[{ "title": "red" }, { "title": "blue" }, { "title": "yellow" }]';
    $mydata = json_decode($json_output);
    var_dump($mydata);
    /* Output:
    array(3) {
      [0]=>
      object(stdClass)#1 (1) {
        ["title"]=>
        string(3) "red"
      }
      [1]=>
      object(stdClass)#2 (1) {
        ["title"]=>
        string(4) "blue"
      }
      [2]=>
      object(stdClass)#3 (1) {
        ["title"]=>
        string(6) "yellow"
      }
    }
    */
    echo $mydata[0]->title;
    // Output: red
?>

当第二个参数为TRUE时,返回的对象将被转换为关联数组。

<?php
    $json_output = '[{ "title": "red" }, { "title": "blue" }, { "title": "yellow" }]';
    $mydata = json_decode($json_output, TRUE);
    var_dump($mydata);
    /* Ouput:
    array(3) {
      [0]=>
      array(1) {
        ["title"]=>
        string(3) "red"
      }
      [1]=>
      array(1) {
        ["title"]=>
        string(4) "blue"
      }
      [2]=>
      array(1) {
        ["title"]=>
        string(6) "yellow"
      }
    }
    */
    echo $mydata[0]['title'];
    // Output: red
?>

另一方面,访问包含PHP的命名约定下不允许的任何字符的对象中的元素可以通过用大括号包装索引来完成。

<?php
    $json_output = '[{ "h1-title": "red" }, { "h1-title": "blue" }, { "h1-title": "yellow" }]';
    $mydata = json_decode($json_output);
    var_dump($mydata);
    /* Output:
    array(3) {
      [0]=>
      object(stdClass)#1 (1) {
        ["h1-title"]=>
        string(3) "red"
      }
      [1]=>
      object(stdClass)#2 (1) {
        ["h1-title"]=>
        string(4) "blue"
      }
      [2]=>
      object(stdClass)#3 (1) {
        ["h1-title"]=>
        string(6) "yellow"
      }
    }
    */
    echo $mydata[0]->{'h1-title'};
    // Output: red
?>