Laravel: Как разобрать данные json в лесу?

В настоящее время это мое мнение

{{ $leads }}

И это вывод

{"error":false,"member":[{"id":"1","firstName":"first","lastName":"last","phoneNumber":"0987654321","email":"[email protected]","owner":{
"id":"10","firstName":"first","lastName":"last"}}]}

Я хотел показать что-то вроде этого

Member ID: 1
Firstname: First
Lastname: Last
Phone: 0987654321

Owner ID: 10
Firstname: First 
Lastname: Last

Ответ 1

Это довольно легко. Прежде всего отправьте в декодированную переменную вида (см. Laravel Views):

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

Затем просто используйте общие конструкции лезвий (см. Laravel Templating):

@foreach($leads['member'] as $member)
    Member ID: {{ $member['id'] }}
    Firstname: {{ $member['firstName'] }}
    Lastname: {{ $member['lastName'] }}
    Phone: {{ $member['phoneNumber'] }}

    Owner ID: {{ $member['owner']['id'] }}
    Firstname: {{ $member['owner']['firstName'] }} 
    Lastname: {{ $member['owner']['lastName'] }}
@endforeach

Ответ 2

Вы можете использовать json decode, тогда вы получите php-массив и используете это значение как свой собственный способ.

<?php 
$leads = json_decode($leads, true);
dd($leads);

Ответ 3

в контроллере просто конвертировать данные json в объект, используя функцию json_decode php, такую ​​как

$member = json_decode($json_string); 

and pass to view in view

return view('page',compact('$member'))

в поле зрения

Member ID: {{$member->member[0]->id}}
Firstname: {{$member->member[0]->firstname}}
Lastname: {{$member->member[0]->lastname}}
Phone: {{$member->member[0]->phone}}

Owner ID: {{$member->owner[0]->id}}
Firstname: {{$member->owner[0]->firstname}}
Lastname: {{$member->owner[0]->lastname}}

Ответ 4

Ловушка для меня берет объект, кодирует его, а затем передает строку в тег javascript script. Для этого вам нужно сделать некоторые замены.

Сначала замените каждый \ двойной косой чертой \\, а затем каждую цитату " с помощью \".

$payload = json_encode($payload);
$payload = preg_replace("_\\\_", "\\\\\\", $payload);
$payload = preg_replace("/\"/", "\\\"", $payload);
return View::make('pages.javascript')
  ->with('payload', $payload)

Затем в шаблоне клинка

@if(isset($payload))
<script>
  window.__payload = JSON.parse("{!!$payload!!}");
</script>
@endif

Это в основном позволяет вам взять объект на стороне php, а затем иметь объект на стороне javascript.