【问题标题】:Get array of strings from json with json_decode使用 json_decode 从 json 获取字符串数组
【发布时间】: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”?
  • 好吧,如果你需要在后端解码两次意味着显然你已经在前端序列化了一次过多

标签: php json symfony


【解决方案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"
}
*/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2020-11-04
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多