PHP json_decode错误:找到了数组值,但需要一个对象

时间:2016-07-28 10:57:31

标签: php arrays json jsonschema

我正在尝试解码以下JSON文件

{
     "email": "mail@gmail.com",
     "password": "12345",
     "languageProficiency": {
            "language": "English",
             "proficiency": 4
   },
     "tags": [
         {
            "name": "singing"
         },
         {
           "name": "dance"
         }
   ]
}

当我这样做时

 $data = json_decode($jsonContent, true);
 echo $data;
 die();

我有以下错误:

找到了数组值,但需要一个对象

问题

1)如何查看JSON中的数据 2)如何访问标签数组

中每个对象的属性

我正在验证Json内容再次使用此架构

  {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
      "email": {
        "type": "string"
      },
      "password": {
        "type": "string"
      },
      "languageProficiency": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string"
          },
          "proficiency": {
            "type": "integer"
          }
        },
        "required": [
          "language",
          "proficiency"
        ]
      },
      "tags": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            }
          },
          "required": [
            "name"
          ]
        }
      }
    },
    "required": [
      "email",
      "password",
      "languageProficiency",
      "tags"
    ]
  }

更新

我尝试了以下查看json内容

 print_r($data)

但我仍然得到同样的错误

2 个答案:

答案 0 :(得分:0)

$data = json_decode($jsonContent, true);

上面的代码行将返回Array,您无法直接使用echo来打印数组。

要打印数组的特定值(例如电子邮件),请执行以下操作:

echo $data["email"];

提示

使用print_r()知道这样的数组结构,

echo "<pre>";
print_r($data);

答案 1 :(得分:0)

您可以尝试使用print_r($ data)来探索值