Json_decode给了我一个字符串,我怎样才能从中提取值?

问题描述 投票:0回答:1

我无法从我的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"}]

我如何访问我的数据?

php
1个回答
0
投票

我认为你的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"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.