我在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()提供的参数无效
非常感谢任何帮助。
答案 0 :(得分:1)
@saaz当您在MySQL中存储JSON时,请使用
json_encode($json_backup, JSON_UNESCAPED_SLASHES)
HTH
答案 1 :(得分:0)
此错误发生在第二个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);
这个肯定会奏效。希望这会有所帮助。