首页 > 解决方案 > 在 Blade 中显示 JSON 集合

问题描述

我正在尝试使用 Laravel 和 Blade 显示我的数据库中的 JSON 数据。

我的 JSON 数据如下所示:

[
    {
        "title": "Open Projects",
        "sequence": "1",
        "columns": [
            "Open Projects",
            "Owner"
        ],
        "col": {
            "index": "1",
            "value": "title",
            "type": "longtext",
            "heading": "1"
        },
        "0": {
            "title": "Owner",
            "index": "2",
            "value": "owner",
            "type": "longtext",
            "heading": "0"
        }
    },
    ... more
]

当我尝试打印其中一个集合时,出现错误: "htmlspecialchars() expects parameter 1 to be string, array given (View: ...)"

标签: jsonlaravellaravel-blade

解决方案


"htmlspecialchars() expects parameter 1 to be string, array given当您尝试使用打印数组时发生{{ $variable }}。相反,您需要将其转换为字符串或对其进行循环。下面的解决方案循环您的集合。

假设您像这样注入 JSON:

return view('myview', ["json" => json_decode($json, true)]);

您可以像这样打印您的值:

@foreach($json as $project)
    <p>Title: {{ $project["title"] }}</p>
    <p>Sequence: {{ $project["sequence"] }}</p>
    <p>Columns: </p>
    <ul>
        @foreach($project["col"] as $key => $value)
            <li>{{ $key }} : {{ $value }}</li>
        @endforeach
    </ul>
    <p>"0" <- whatever this is</p>
    <ul>
        @foreach($project["0"] as $key => $value)
            <li>{{ $key }} : {{ $value }}</li>
        @endforeach
    </ul>
@endforeach

推荐阅读