php - JSON解码后在laravel中爆炸PHP
问题描述
我想分解我解码的 JSON,以便我可以删除间距并调用表格中的某些值。我有信心在第一次使用它后需要使用爆炸来实现我的目标,所以我不确定如何使用它
我的控制器是:
public function index($id)
{
$message = Message::find($id);
$content = json_decode($message->content,TRUE);
var_dump($content);
explode(',',',{,},[,]');
return view('details', ['message' => $message]);
}
我有一个标准表
<td>{{$message->type}}</td>
<td>{{$message->content}}</td>
<td>{{$message->response}}</td>
<td>{{$message->id}}</td>
我目前在控制器上有一个 vardump,所以我可以看到正在解析的内容(并测试我的解码是否正常工作)。它返回以下内容:
array(2) { ["text"]=> string(4) "test" ["suggestions"]=> array(1) { [0]=> array(1) { ["reply"]=> array(2) { ["text"]=> string(4) "test" ["postbackData"]=> string(36) "e05ad1f0-a0f8-4a56-a8c7-67f56ba9fe4c" } } } }
我想爆炸这个,所以我可以将它们中的每一个提取到我表中的不同列中
解决方案
所以最好在这种情况下使用访问器。您可以在此处找到有关它们如何工作的文档https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor
在我们的消息模型中
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
public function getContentAttribute($value)
{
return json_decode($value);
}
}
在你的控制器中
public function index($id)
{
$message = Message::find($id);
return view('details', ['message' => $message]);
}
你的看法
<p>{{property_exists($message->content, 'text') ? $message->content->text:property_exists($message->content, 'log') ? $message->content->log :property_exists($message->content, 'data')? $message->content->data: ""}}</p>
推荐阅读
- java - Maven exec:java 覆盖 pom.xml 中定义的系统属性
- c++ - 从 cv::Mat 转换为 arma::mat
- swift - 为什么在 Debian 上安装后 Swift REPL 在终端中抛出错误
- python - 获取 3d 列表中唯一元素的最低索引的有效算法
- c++ - CLWB(高速缓存行回写)到同一位置与循环几行相比性能低下
- postgresql - 当我尝试将值输入到事务表中时,我遇到了此代码的问题
- swift - 在 Swift 中替换索引处的字符
- c - Arduino代码不处理串行输出
- nginx - nginx: [emerg] "location" 指令在 /etc/nginx/nginx.conf:16 中是不允许的
- spring - 运行两个 Spring Boot 实例