使用 json_decode 从 json 获取字符串数组

Posted

技术标签:

【中文标题】使用 json_decode 从 json 获取字符串数组【英文标题】:Get array of strings from json with json_decode 【发布时间】:2022-01-09 02:17:03 【问题描述】:

看起来很容易,但我没有得到预期的数据。我想将一个字符串数组发送到我的后端,然后对它们进行迭代/处理。

在前端我有:

var jsonArray = ["String1", "String2"]
await newFile(JSON.stringify(jsonArray));

在我的控制器中,我有:

$requestData = json_decode($request->getContent(), true); 
$this->logger->info("File request data is ", [ $requestData ]);

我的记录器输出:

File request data is ["[\"String1\",\"String2\"]"]

这不是一个数组,而是一个字符串。

如果我在 php 中使用

$txt = ["Test", "Test2"];
$json = json_encode($txt, true);

print_r(json_decode($json));

输出将是一个数组。我哪里错了或者我错过了什么?在 json_decode 中拥有 true 选项应该会返回我的数组。

【问题讨论】:

您是否尝试在 json_decode 方法中使用“false”? 好吧,如果你需要在后端解码两次意味着显然你已经在前端序列化了一次过多 【参考方案1】:

这个

["Test", "Test2"]

是一个数组,而这个

"[\"String1\",\"String2\"]"

是一个字符串。 json_decode() 需要一个字符串作为参数。

$jsonString = "[\"String1\",\"String2\"]";
$array = json_decode($jsonString, true);

var_dump($array);

/*
array(2) 
  [0]=>
  string(7) "String1"
  [1]=>
  string(7) "String2"

*/

【讨论】:

以上是关于使用 json_decode 从 json 获取字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 获取JSON json_decode返回NULL解决办法

PHP 获取JSON json_decode返回NULL解决办法

jsonp -> json_decode()

使用 json_decode 解码条带 json 不起作用

从 jQuery Ajax 发布时 PHP Json 格式错误

如何在 laravel 中使用 foreach 从 json 文件中获取所有数据?