Json对象到PHP数组 - 不转换

时间:2014-03-01 19:20:05

标签: php

我正在尝试将一个json对象存储在textarea中并将其转换为php数组。我将textarea的值分配给变量,如$data = $_POST[‘data’]。当我提交文本的值时,我使用json_decode($data, true)将JSON对象转换为php数组。但没有任何反应。好像什么都没有分配。我怎样才能实现上述目标?

编辑:我已添加引号并在下方提出建议但无效: DEMO

PHP

if(isset($_POST['submit'])) {
$data = $_POST['data'];
$personArray = json_decode($data, true);
print_r($personArray);
}

HTML

<textarea name="data">[{
    "firstName": "Jenny",
    "lastName": "LaRusso",
    "phone": "(555) 121-2121",
    "alt_phone": "(555) 123-4567",
    "main1": false,
    "main2": true    
}, {
    "firstName": "Sensei",
    "lastName": "Miyagi",
    "phone": "(555) 444-2222",
    "alt_phone": "(555) 999-1212",
    "main1": true,
    "main2": false
}]</textarea>

3 个答案:

答案 0 :(得分:3)

我认为在正确的JSON中,键(如firstName)也需要用引号括起来。

答案 1 :(得分:2)

将您的PHP代码更改为

if(isset($_POST['data'])) {
$data = $_POST['data'];
$data = stripslashes($data); //Stripslashes removes all backslashes :)
$personArray = json_decode($data, true);
print_r($personArray);
}

你的JSON对象应该在textarea

[{
"firstName": "Jenny",
"lastName": "LaRusso",
"phone": "(555) 121-2121",
"alt_phone": "(555) 123-4567",
"main1": false,
"main2": true    
}, {
"firstName": "Sensei",
"lastName": "Miyagi",
"phone": "(555) 444-2222",
"alt_phone": "(555) 999-1212",
"main1": true,
"main2": false
}]

快乐编码:)

答案 2 :(得分:0)

您的PHP代码似乎没有任何问题。 对于调试,在设置$ personArray之后,尝试添加以下两行:

var_dump($data);
var_dump($personArray);

这会导致你遇到麻烦的原因。

在这里你可以看到每个返回类型的含义(如果$ returnArray等于false):http://php.net/json_decode