Php - json_decode返回null

时间:2017-12-13 12:04:01

标签: php json

我正在尝试使用json_decode php函数解码看起来像下面的json字符串:

"{id:"1",fields:[{id:"1",value:"asdasd"},{id: "2",value:"asdasd"},{id:"3",value:"asdasd"}]}"

我尝试了question的各种选项。像:

$foo = utf8_encode($json_string);
$data = json_decode($foo, true);

或者:

json_decode(str_replace ('\"','"', $json_string), true);

即使:

json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );

但是,我尝试的所有内容总是得到null。 那是为什么?

3 个答案:

答案 0 :(得分:2)

首先,您的JSON无效。在询问任何JSON lint tool之前,您应该首先验证您的JSON,这将告诉您错误的确切位置和位置。

此外,在PHP中处理JSON时,应始终检查错误。您可以查看json_last_error函数的官方文档,了解如何正确执行验证。

$json = 'your_json_string';
$array = json_decode($json, true);

if (json_last_error()) {
    die('Invalid JSON provided!');
}

printf('<pre>Valid JSON output: %s</pre>', print_r($array, true));

答案 1 :(得分:1)

<?php
$data='{
    "id": "1",
    "fields": [{
        "id": "1",
        "value": "asdasd"
    }, {
        "id": "2",
        "value": "asdasd"
    }, {
        "id": "3",
        "value": "asdasd"
    }]
}';

$dataNew=json_decode($data,true);
echo '<pre>';
    print_r($dataNew);

你的json无效。 json-key需要在双引号内。之后,json_decode将正常工作。

输出是:

Array
(
    [id] => 1
    [fields] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [value] => asdasd
                )

            [1] => Array
                (
                    [id] => 2
                    [value] => asdasd
                )

            [2] => Array
                (
                    [id] => 3
                    [value] => asdasd
                )

        )

)

答案 2 :(得分:0)

您的JSON返回Null,因为在JSON中,键应该是string.Your JSON格式不正确,因此返回Null。 尝试将其重写为:

 {
  "id":"1",
  "fields":[
    {
      "id":"1",
      "value":"asdasd"

    },
    {
      "id": "2",
      "value":"asdasd"

    },{
      "id":"3",
      "value":"asdasd"
      }
    ]
}