数据库json列在laravel刀片中返回转义字符串
Posted
技术标签:
【中文标题】数据库json列在laravel刀片中返回转义字符串【英文标题】:Database json column returning escaped string in laravel blade 【发布时间】:2015-07-23 12:26:09 【问题描述】:我在 mysql 列中保存了一些 Json 数据。在将数据提取到 Laravel Blade 应用程序时,json 字段都被转义了。因此,我在读取 json 数据时遇到了问题。
[
"id": "1",
"json_backup": "\"id\":\"2\",\"organization_id\":\"1\",\"amount\":\"7800.00\",\"date\":\"2015-05-11\",\"created_at\":\"2015-05-11 07:20:45\",\"updated_at\":\"2015-05-11 07:20:45\"",
"ip": "127.0.0.1",
"created_at": "2015-05-12 12:21:16",
"updated_at": "2015-05-12 12:21:16"
]
上例中的 json_backup 字段被转义。如何确保该字段不被转义。
获取数据的代码
$activity = Activity::find(1);
在视图中:
@foreach ($activities AS $activity)
@foreach($activity->json_backup AS $order)
@endforeach
@endforeach
错误:
为 foreach() 提供的参数无效
任何帮助将不胜感激。
【问题讨论】:
对不起。它不起作用。 【参考方案1】:此错误出现在第二个foreach
部分。
请以这种方式尝试一下。
$json = json_decode($activity->json_backup, true);
这可行,但不能肯定地说。即使你有问题重构代码并使用以下代码创建一个类:
function escapeJsonString($value)
$escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
$replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
$result = str_replace($escapers, $replacements, $value);
return $result;
简单地说
$json = escapeJsonString($activity->json_backup);
这个肯定行。希望这会有所帮助。
【讨论】:
【参考方案2】:@saaz 在 MySQL 中存储 JSON 时,请使用
json_encode($json_backup, JSON_UNESCAPED_SLASHES)
HTH
【讨论】:
以上是关于数据库json列在laravel刀片中返回转义字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何从 laravel 刀片中的 json 数据创建分页链接
如何在 laravel 刀片模板中使用 JSON 数据进行模型绑定?
laravel 5.3 - 在刀片模板中显示来自 mysql 文本字段的 json 数据