【问题标题】:Database json column returning escaped string in laravel blade数据库json列在laravel刀片中返回转义字符串
【发布时间】: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() 提供的参数无效

任何帮助将不胜感激。

【问题讨论】:

  • 对不起。它不起作用。

标签: mysql json laravel-5 blade


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 2013-02-07
      • 1970-01-01
      • 2018-03-24
      • 2019-05-30
      • 2020-05-23
      • 2017-09-04
      • 1970-01-01
      相关资源
      最近更新 更多