将JSON转换为PHP数组
我正在向PHP发送一篇包含多个项目的JSON帖子。我的JSON如下所示:将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
[
{
"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一样,我已经确认了这一点,它将返回,但在每个报价前都有反斜杠。