从 Laravel Blade 中的 JSON 中选择值

Posted

技术标签:

【中文标题】从 Laravel Blade 中的 JSON 中选择值【英文标题】:Select value from JSON inside Laravel Blade 【发布时间】:2017-10-08 10:33:44 【问题描述】:

我将 laravel 与刀片和 vuejs 一起使用。使用控制器作为列表,我将收到正确的响应,其中包含要显示的所有用户数据。

其中一些字段是 json 数据,我无法理解如何检索单个值。

`@foreach ($lista as $freelance)
  <md-table-row>
    <md-table-cell>
       $freelance->regione 
     </md-table-cell>
  </md-table-row>
@endforeach`

$freelance->regione 是一个 JSON,在页面中正确显示为:

`"text": "Veneto", "value": "Veneto"`

我的问题是,如何获取 JSON 响应的单个值而不是所有数据?最好没有循环...我知道我可以使用一个新的循环,但可能没有..

【问题讨论】:

【参考方案1】:

在传递 $lista 变量之前在您的控制器中尝试此操作以查看执行此操作。

foreach($lista as list)


 //we will decode the variable befoe passing it to view
 $list->regione = json_decode($list->regione, true);



然后将变量传递给您的视图,例如:

    return View::make('your_view_name', compact('lista'));

然后在您的刀片视图中。

`@foreach ($lista as $freelance)
  <md-table-row>
    <md-table-cell>
       $freelance->regione['text'] 
     </md-table-cell>
    <md-table-cell>
       $freelance->regione['value'] 
     </md-table-cell>
  </md-table-row>
@endforeach`

【讨论】:

看起来不错 Sapnesh...我已经按照您所说的做了,并且在列表控制器中我看到了正确的值...不幸的是 compact($lista) 向我抛出了这个错误:调用数组上的成员函数 total()... @Murphz 哦,对不起,你不需要在使用 compact 时包含$,这是一个错字。现在更新了 那是 Sapnesh,它有效!我不得不纠正您代码中的一些错误,但也许这只是我的平台。 json_decode 结果不能应用于 $list->regione 因为它只接受字符串而不接受数组,使用临时值解决了它。之后,使用 compact('lista') 我现在可以使用 $freelance->regione 在刀片模板中检索正确的值...再次感谢先生!【参考方案2】:

laravel 刀片模板有一些功能可以直接使用。您需要对 json 字符串进行解码才能获取其中的值。

@foreach ($lista as $freelance)
 <md-table-row>
    <md-table-cell>
         json_decode($freelance->regione)->value 
    </md-table-cell>
 </md-table-row>
@endforeach

【讨论】:

这可能是因为循环中的某些区域 json 字符串可能不包含 value 键【参考方案3】:

可以使用json_decode来解析json字符串,json解析参考this

 json_decode($freelance->regione, true)['value'] 

【讨论】:

是的,试过了..但是刀片内部对我不起作用,在 Sapnesh 写的控制器中使用 json_decode 似乎效果很好......

以上是关于从 Laravel Blade 中的 JSON 中选择值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel Blade 从 Postgres 显示 JSON 数据

Laravel Blade 中的全局变量

如何在 Json Object Laravel Blade 中访问值

如何将数组从 Laravel Blade 传递到 Laravel 6/Vue 2.6 中的 Vue 组件。*

从 laravel/blade 中的数组创建逗号分隔列表?

在 Blade 中显示 JSON 集合