我有这个问题,我的Ajax JSON.stringify的一部分像文本一样到达,而另一部分就像数组元素一样,我的问题是如何将所有数据转换为数组并提取元素值,这里是代码I&#39 ;我在我的PHP脚本中接收:
array (size=3)
'JSON' => string ' {
"requestType":"TourListRequest",
"data":{
"ApiKey":"12345",
"ResellerId":"1000",
"SupplierId":"1004",
"ExternalReference":"10051374722994001",
"Timestamp":"2013-12-10T13:30:54.616+10:00",
"Extension":{
"any":{
}
},
"Parameter":{
"Name":{
"0":" "
},
"Value":{
}
}
}
}
' (length=412)
'URL' => string 'api_test_json.php?test=JSON Tour List' (length=37)
'Type' => string 'JSON Tour List' (length=14)
我的问题:如何获取" requestType"," ApiKey"," ResellerId"等的值作为PHP变量?
这是我生成AJAX CALL的代码:
<textarea style="width: 100%; height: 300px;" id="request_json">
{
"requestType":"TourListRequest",
"data":{
"ApiKey":"12345",
"ResellerId":"900",
"SupplierId":"904",
"ExternalReference":"10051374722994001",
"Timestamp":"2013-12-10T13:30:54.616+10:00",
"Extension":{
"any":{
}
},
"Parameter":{
"Name":{
"0":" "
},
"Value":{
}
}
}
}
<script>
function SubmitAPI(){
var sendInfo = { JSON: $('#request_json').val(),
URL: $('#supplier_api_endpoint_JSON_Tour_List').val(),
Type: 'JSON Tour List' };
$('#response_json').html("Calling API...");
$.ajax({
url: "post_JSON.php",
data: {data: JSON.stringify(sendInfo)},
dataType: 'html',
type: "POST",
cache: false,
success: function(data){
console.log(data)
$('#response_json').html(data);
}
});
}
</script>
提前谢谢你......
答案 0 :(得分:0)
您只需要解码JSON并从结果对象数据中访问变量。
$array = ...; // the array you dump in your example
$obj = json_decode($array['JSON']);
// request type information
$request_type = $obj->requestType;
// here is all the stuff in 'data'
$data = $obj->data;
// now access your data variables like
echo $data->ApiKey;
echo $data->ResellerId;
// and so on...
json_decode()
步骤完成了大部分工作。 JSON只是对象和/或数组数据的序列化方法。通过json_decode()
对其进行反序列化后,您可以直接访问序列化为JSON的任何数据结构,就像使用任何普通的数字索引数组或stdClass
对象(PHP的默认对象类型)一样。
请注意,在使用此函数时,您经常会将true
作为第二个参数传递。这会将JSON对象结构转换为关联数组而不是stdClass
个对象。我个人很少使用它,因为很多时候,对象结构{}
中的项目应该更多地被视为PHP中的对象而不是更像地图的关联数组。尽管如此,在PHP中工作的人通常会出于某种原因倾向于使用关联数组,因此您将在示例中看到很多(例如json_decode($json, true)
)