【问题标题】:Laravel : How do I parse this json data in view blade?Laravel:如何在视图刀片中解析这个 json 数据?
【发布时间】:2016-09-27 06:10:21
【问题描述】:

您好,我有这样的 JSon 数据:

[{label":a, "value":{"name":"abc","address"="New York"}}]

我已经成功打印了 json

{!! $mydata !!}

但是当我尝试使用 foreach 时

@foreach($mydata['value'] as $value)
    Member ID: {{ $value['name'] }}   
@endforeach

laravel 返回

ErrorException in Collection.php line 1108: Undefined index:value

我关注了这个:Laravel: How do I parse this json data in view blade?

有人可以帮忙吗?

注意:JSON 和变量不是我的。我对其进行了更改以使其变得简单。

已编辑:

添加{{ dd(json_decode($tagihan, true)) }}并返回

Result after added {{ dd(json_decode($tagihan, true)) }}

已编辑:

这是我的 JSON:

array:5 [▼
  0 => array:7 [▼
    "id" => 8
    "no_rek_pelanggan" => 11115
    "keadaan_meteran" => 0
    "angka_meteran" => 3000
    "created_at" => "2016-05-28 15:28:17"
    "updated_at" => "2016-05-28 15:28:17"
    "all_pelanggan" => array:7 [▼
      "no_rek" => 11115
      "nama" => "Wicak"
      "alamat" => "Malang"
      "long" => 112.6153447
      "lat" => -7.9528411
      "created_at" => "2016-05-26 00:00:00"
      "updated_at" => "2016-05-26 05:00:00"
    ]
  ]

我想从 all_pelanggan 中的 nama、alamat、long、lat 读取值。我该怎么做?

【问题讨论】:

  • 我的 JSON 结构与我在上面发布的 url 上的 JSON 有点不同。
  • 我想说,无论您使用什么框架,JSON 结构解析都是一样的。您的 json 似乎是对象结构的数组。因此,一旦您有用于解析的 foreach 循环,您将在循环空间内获得索引及其值。您可以使用传统的 for 循环或特定于框架的。通常我更喜欢 /* for( var index in Array) {} */ 因为它节省了大量的执行时间。

标签: php json laravel blade


【解决方案1】:

如果你真的想在视图中使用json编码的数据,请在foreach中使用json_decode()

@foreach(json_decode($mydata, true) as $value)
    Member ID: {{ $value['all_pelanggan']['name'] }}   
@endforeach

【讨论】:

  • 返回:Undefined index: all_pelanggan
  • 我猜这个错误是由其他一些代码引起的。我在您的数据中没有看到 all_pelanggan。你可以看到json_decode($mydata, true)['value']dd(json_decode($mydata, true)['value']) 生成了什么;
  • 我的意思是返回Undefined index: value
  • 请把这个{{ dd(json_decode($mydata, true)) }} 放在@foreach 部分之前,然后告诉我它的结果。
  • 是的!你做到了!谢谢
【解决方案2】:

您没有按照您提供的问题进行操作。如前所述,您应该在控制器中解码您的 json:

return view('your-view')->with('mydata', json_decode($mydata, true));

【讨论】:

  • 添加到我的控制器,现在返回:ErrorException in b7982ee647563d1a79c233566311ac51cbab5658.php line 1: Array to string conversion (View: E:\INSTALL\xampp2\htdocs\sipetan\WebService\resources\views\tagihan\index.blade.php)
  • 海老天,我能再问你一个问题吗?如果我有这样的 json:array:7 [▼ "id" => 8 "no_rek_pelanggan" => 11115 "keadaan_meteran" => 0 "angka_meteran" => 3000 "created_at" => "2016-05-28 15:28:17" "updated_at" => "2016-05-28 15:28:17" "all_pelanggan" => array:7 [▼ "no_rek" => 11115 "nama" => "Wicak" "alamat" => "Malang" "long" => 112.6153447 "lat" => -7.9528411 "created_at" => "2016-05-26 00:00:00" "updated_at" => "2016-05-26 05:00:00" ] ]' 我如何解析 all_pelanggan->nama?我尝试了相同的方法,但返回错误。
【解决方案3】:

首先,您有一个 JSON 数组。但是您正在尝试获取 JSON 对象。 如果您确定只有一个对象,请在您的控制器中使用 Model::<selection-criteria>->first(); 以便它返回一个 JSON 对象。那么“你的 foreach”就会开始工作了。

如果您不确定只有一个对象或将来会有更多对象,请保持您的选择语句不变(末尾有->get())。所以它会返回一个数组。

现在修改您的 foreach 以获取该数组。那就是您的数据集是一个数组,每个元素都是带有子对象的 JSON 对象。

@foreach($mydata as $myDatum)
    @foreach($myDatum as $val)
        Object label: {{ $val['label'] }}
        Member Name: {{ $val['value']->name }}
        Member Address: {{ $val['value']->address }}
    @endforeach
@endforeach

【讨论】:

    【解决方案4】:

    你可以试试下面的

    @for ($i = 0; $i < count($myData); $i++)
       Member ID: {{ $myData[i]['value'] }}
    @endfor
    

    我希望这有效。

    【讨论】:

    • 这将打印{"name":"abc","address"="New York"}。您应该通过调用每个对象来获取特定值。看我的回答。
    猜你喜欢
    • 2016-04-19
    • 2019-01-16
    • 2017-09-04
    • 2020-10-10
    • 2021-01-13
    • 2016-06-24
    • 2020-03-14
    • 2021-05-10
    相关资源
    最近更新 更多