我无法从我的JSON DECODED STRING中获取值
这就是我尝试过的
$data = json_decode(stripslashes($_POST['data']),true);
$data = TYPE --> String
给我:
"[{"name":"option_page","value":"gpinator_plugin_options"},
{"name":"action","value":"update"},
{"name":"_wpnonce","value":"b0b29d4682"},
{"name":"_wp_http_referer","value":"/wordpress/wordpress-4.9.1/wordpress/wp-admin/admin.php?page=gpinator_settings_admin_page"},
{"name":"gpinator_category_allowed","value":"on"},
{"name":"gpinator_languages_swedish","value":"on"}]"
$ _POST ['data']给我
"\"{\\\"name\\\":\\\"option_page\\\",\\\"value\\\":\\\"gpinator_plugin_options\\\"}
,{\\\"name\\\":\\\"action\\\",\\\"value\\\":\\\"update\\\"},
{\\\"name\\\":\\\"_wpnonce\\\",\\\"value\\\":\\\"b0b29d4682\\\"}, {\\\"name\\\":\\\"_wp_http_referer\\\",\\\"value\\\":\\\"/wordpress/wordpress-
4.9.1/wordpress/wp-admin/admin.php?page=gpinator_settings_admin_page\\\"},
{\\\"name\\\":\\\"gpinator_category_allowed\\\",\\\"value\\\":\\\"on\\\"},{\\\"name\\\":\\\"gpinator_languages_swedish\\\",\\\"value\\\":\\\"on\\\"}]\""
不,我已经尝试过以各种方式提取数据。
如果我做
$obj = $data[0];
我只能得到
"["
我运行这些功能
$josnerr = json_last_error(); result --> 0
$josnerree = json_last_error_msg(); result "No error"
在做print_r($ data)时;
它给了我
[{"name":"option_page","value":"gpinator_plugin_options"},
{"name":"action","value":"update"},
{"name":"_wpnonce","value":"b0b29d4682"},
{"name":"_wp_http_referer","value":"/wordpress/wordpress-4.9.1/wordpress/wp-admin/admin.php?page=gpinator_settings_admin_page"},
{"name":"gpinator_category_allowed","value":"on"},
{"name":"gpinator_languages_swedish","value":"on"}]
我如何访问我的数据?
我认为你的json对象是一个对象的字符串表示。就像你json_encode
两次结构你首先得到一个json_string,然后你得到一个json编码的字符串的字符串。示例:想象一下,您将此传递给json_decode:
var_dump(json_decode('[{"a": "b"}, {"b": "a"}]', true))
// ==>
array(2) {
[0] =>
array(1) {
'a' =>
string(1) "b"
}
[1] =>
array(1) {
'b' =>
string(1) "a"
}
}
虽然这样的小改变:
var_dump(json_decode('"[{\"a\": \"b\"}, {\"b\": \"a\"}]"', true))
// ==>
string(24) "[{"a": "b"}, {"b": "a"}]"
也许您应该在将数据传递给json_decode
之前查看数据?无论如何,如果是这样,那么问题所在的是客户端。
UPDATE
查看您提供的帖子数据确实是我想象的。您需要在客户端修复此问题。如果您别无选择,只能在最后修复它,您可以对该值进行双重解码:
$strJson = json_decode('"[{\"a\": \"b\"}, {\"b\": \"a\"}]"');
$arrPayload = json_decode($strJson, true);
var_dump($arrPayload);
// ==>
array(2) {
[0] =>
array(1) {
'a' =>
string(1) "b"
}
[1] =>
array(1) {
'b' =>
string(1) "a"
}
}