Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON转换为PHP数组_Php_Json - Fatal编程技术网

将JSON转换为PHP数组

将JSON转换为PHP数组,php,json,Php,Json,我正在向PHP发送一篇包含多个项目的JSON帖子。我的JSON如下所示: [ { "request": "submitTicket", "id": "3", "delivLoc": "1 COLORADO CITY", "estimatedBarrels": "123.0", "facilityID": "T666778", "highDegreeF": "0.0", "hi

我正在向PHP发送一篇包含多个项目的JSON帖子。我的JSON如下所示:

 [
    {
        "request": "submitTicket",
        "id": "3",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "123.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "4",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "143.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "5",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "122.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    }
]
$data = json_decode(stripslashes($_POST['json']));
我一直试图在PHP中使用json_decode(),但它返回null,这导致foreach循环失败。为什么解码不起作用

实际上,当到达PHP时,这个JSON得到了放在里面的斜杠。在这里发布之前,我把它们拿了出来,并尝试使用stripslashes()运行它。

试试这个

$data ='[

{"request":"submitTicket","id":"3","delivLoc":"1 COLORADO CITY","estimatedBarrels":"123.0","facilityID":"T666778","highDegreeF":"0.0","highOilFeet":"0"},
{"request":"submitTicket","id":"4","delivLoc":"1 COLORADO CITY","estimatedBarrels":"143.0","facilityID":"T666778","highDegreeF":"0.0","highOilFeet":"0"},
{"request":"submitTicket","id":"5","delivLoc":"1 COLORADO CITY","estimatedBarrels":"122.0","facilityID":"T666778","highDegreeF":"0.0","highOilFeet":"0"}

]';

$jsonarray=json_decode($data,true);
print_r($jsonarray);
试试这个

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true));
我能看到的是,传递的实际数据可能不是有效的json

只需将数据分配到一个变量中,并像这样使用

var data = [{
        "request": "submitTicket",
        "id": "3",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "123.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "4",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "143.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "5",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "122.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    }
]
$.ajax({
    url:[your url],
    data:data,
    ....
});
然后在数据部分用ajax(我假设您使用的是ajax)传递这些信息

var data = [{
        "request": "submitTicket",
        "id": "3",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "123.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "4",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "143.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "5",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "122.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    }
]
$.ajax({
    url:[your url],
    data:data,
    ....
});

希望这能起作用

我在考虑了大家的建议后才想出了办法。在尝试解码JSON之前,我必须删除帖子中的斜杠。我对PHP数组的解码如下:

 [
    {
        "request": "submitTicket",
        "id": "3",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "123.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "4",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "143.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    },
    {
        "request": "submitTicket",
        "id": "5",
        "delivLoc": "1 COLORADO CITY",
        "estimatedBarrels": "122.0",
        "facilityID": "T666778",
        "highDegreeF": "0.0",
        "highOilFeet": "0"
    }
]
$data = json_decode(stripslashes($_POST['json']));

我想昨晚太晚了,我有点忽略了这一点。感谢大家的帮助和快速响应。

您能在android或php中显示您尝试json解码的变量的
var\u dump
/
print\r
结果吗?你有没有看报纸?“
NULL
在json无法解码或编码数据深度超过递归限制时返回。”您的json可能格式不正确。json来自Android,我正在尝试用PHP进行解码。这是一个测试,但当我说:$data=json_decode($_POST['json'],true);然后$data总是返回空值。不管你的帖子是否正确,就像print_r($_post['json'])Jocker一样,我已经确认了这一点,它将返回,但在每个报价前都有反斜杠。