【发布时间】:2020-05-10 15:38:33
【问题描述】:
在制作 API 时,我遇到了一个我不太确定的问题。我正在尝试输入一个 JSON 数据块,因为这是节点客户端将提供给 API 的内容。
我收到了错误:
ErrorException: Invalid argument supplied for foreach()
我试过对 $data 变量做 json_encode,也试过这个:
$data = json_encode(json_encode($validatedData["required_data"]), true);
但没有运气。
我目前有这个代码:
public function putData(Request $request) {
if($request->get('token') !== config()->get('discord.CLIENT_SECRET'))
return response()->json($this->badAuthResponse);
$guilds = Guilds::all();
$validatedData = $request->validate([
"required_data" => "required"
]);
$data = $validatedData["required_data"];
foreach($data as $guild) {
//complete the task of whatever im going to do with guild in a bit
}
}
我正在尝试传递这些数据:
{
"1":{
"is_setup":1,
"guild_data":{
"prefix":"m>",
"locale":"en",
"filter":false
}
},
"2":{
"warn_data":{
"1":{
"total_count":1,
"reasons":{
"1":"phising links"
}
}
}
},
"3":{
}
}
【问题讨论】:
-
我在您发布的示例数据中没有看到 required_data。您是否希望验证失败而不失败?
-
required_data为传入的数据名称,在postman中测试。数据的传递是正确的,但我正在尝试将其从字符串更改为 JSON 对象。
-
你试过 dd $data 吗?
-
转储 $data 变量为我提供了我提供的 JSON,但它已被字符串化,尝试对其进行编码或解码没有任何帮助。
-
应该是 $data = json_decode($validatedData["required_data"]), true);