是否可以读取这些字符串(从json格式转换为字符串)到php数组?
jQuery的:
$.ajax({
type: 'GET',
url: 'index.php?task=search&wtd=ul',
data: $('#fupdate').serialize()+'&derulo='+$('#getdbresult').val(),
beforeSend: function(){
$('.the-modal').html('Updating...');
},
success: function(d){
$('.the-modal').html(d);
console.log(d);
}
});
PHP:
var_dump(json_decode("{$_REQUEST['derulo']}", true));
值:
string(379)"[{\"target_detail_id\":\"66351031\",\"first_name\":\"Dorothy\",\"last_name\":\"Smith\",\"company\":\"Active Money Now\",\"sic_code\":\"\",\"position\":\"\",\"target\":\"1300572544\",\"website\":\"\",\"email\":\"dorothy@activemoney.com.au\",\"email_status\":\"\",\"country\":\"Australia\",\"city\":\"Broken Hill\",\"postal_code\":\"2880\",\"address\":\"Po Box 41\",\"note\":\"\"}]"
结果:
NULL
我尝试使用json_decode
但没有出现。
还考虑使用implode
相应地分隔字符串。
但还有其他方法吗?
EDIT:
适用于:$object = (json_decode(stripslashes($_REQUEST['derulo'])));
答案 0 :(得分:4)
您需要使用json_decode
(" 解码JSON字符串")而不是json_encode
(" 返回值的JSON表示")。
假设您的输入正确(并且您提供的示例是),则返回值将是表示 JSON数据的对象。您还可以将结果作为数组获取(请参阅参数参考文档)。
以下作品:
PHP代码:
<?php
$json = <<<JSON
[{"target_detail_id":"66351031","first_name":"Dorothy","last_name":"Smith","company":"Active Money Now","sic_code":"","position":"","target":"1300572544","website":"","email":"dorothy@activemoney.com.au","email_status":"","country":"Australia","city":"Broken Hill","postal_code":"2880","address":"Po Box 41","note":""}]
JSON;
$object = json_decode($json);
$array = json_decode($json, true);
var_dump($object);
var_dump($array);
<强>输出:强>
array(1) {
[0]=>
object(stdClass)#1 (15) {
["target_detail_id"]=>
string(8) "66351031"
["first_name"]=>
string(7) "Dorothy"
["last_name"]=>
string(5) "Smith"
["company"]=>
string(16) "Active Money Now"
["sic_code"]=>
string(0) ""
["position"]=>
string(0) ""
["target"]=>
string(10) "1300572544"
["website"]=>
string(0) ""
["email"]=>
string(26) "dorothy@activemoney.com.au"
["email_status"]=>
string(0) ""
["country"]=>
string(9) "Australia"
["city"]=>
string(11) "Broken Hill"
["postal_code"]=>
string(4) "2880"
["address"]=>
string(9) "Po Box 41"
["note"]=>
string(0) ""
}
}
array(1) {
[0]=>
array(15) {
["target_detail_id"]=>
string(8) "66351031"
["first_name"]=>
string(7) "Dorothy"
["last_name"]=>
string(5) "Smith"
["company"]=>
string(16) "Active Money Now"
["sic_code"]=>
string(0) ""
["position"]=>
string(0) ""
["target"]=>
string(10) "1300572544"
["website"]=>
string(0) ""
["email"]=>
string(26) "dorothy@activemoney.com.au"
["email_status"]=>
string(0) ""
["country"]=>
string(9) "Australia"
["city"]=>
string(11) "Broken Hill"
["postal_code"]=>
string(4) "2880"
["address"]=>
string(9) "Po Box 41"
["note"]=>
string(0) ""
}
}
EDIT2:
您不需要围绕json_decode
参数引用,只需使用
json_decode($_REQUEST['derulo'], true);
但这不是造成问题的原因(它只是效率低下,php必须解析字符串中的另一个变量)。
您的php代码段有效,因此您必须从查询中获取错误的数据。您可以使用
轻松检查var_dump($_REQUEST['derulo']);
使用data
请求或切换到POST时,您不应该混合在网址和GET
上发送数据。我建议让jQuery处理数据的序列化,例如
$.ajax({
type: 'GET',
url: 'index.php',
data: {
'task':'search',
'wtd':'ul',
'derulo':JSON.stringify($('#getdbresult').val())
},
beforeSend: function(){
$('.the-modal').html('Updating...');
},
success: function(d){
$('.the-modal').html(d);
console.log(d);
}
});
答案 1 :(得分:0)
您附加到问题的代码已经格式化为json。所以你需要使用json_decode函数解码它。它返回一个对象,只是将它强制转换为数组。 请注意,json代码本身就是一个数组(一切都在方括号内),所以我们必须引用第一个项目($ item [0])。
$json = '[{"target_detail_id":"66351031","first_name":"Dorothy",...';
$items = json_decode($json);
$items_array = (array) $items[0];
Json_decode还提供了一个自动返回数组的选项:json_decode($ json,true)。