Изменить формат JSON в PHP / Laravel - PullRequest
0 голосов
/ 14 июня 2019

У меня есть этот код php для создания файла json:

foreach ($points as $key => $point) {
$pointsArray[$id]['id']  = $id = $id + 1 ;
$pointsArray[$id]['marker']  = $icon ;
$pointsArray[$id]['name'] = $point->name ;
$pointsArray[$id]['lat']  = $point->lat ;
$pointsArray[$id]['lng']  = $point->lng ;
$pointsArray[$id]['photo'] = $point->images;
$pointsArray[$id]['url']  = $url ;

}

return json_encode($pointsArray);

Это нормально работает.Это возвращение:

{"1":{"id":1,"marker":"greenIcon","name":"nazwa","lat":"19.09411780","lng":"49.81325260","photo":"upload\/images\/UserImage\/8ae2bcb47491c56c80c04b7638378955.jpg","url":"http:\/\/domain.test\/nazwa,u,2"},"2":{"id":2,"marker":"redIcon","name":"LAYLA 38-RIMING W100","lat":"21.33532170","lng":"51.91559550","photo":"upload\/images\/UserImage\/b4041e62f87320ce28d1e5f5434a5f5a.jpg","url":"http:\/\/domain.test\/layla-38-riming-w100,u,3"},"3":{"id":3,"marker":"redIcon","name":"sponsor","lat":"18.40476347","lng":"54.56898020","photo":"upload\/images\/UserImage\/cb36bc68e918606fd3d43ba5e8cd4667.jpg","url":"http:\/\/domain.test\/sponsor,u,4"},"4":{"id":4,"marker":"redIcon","name":"angelsa","lat":"18.39690080","lng":"54.57001480","photo":"upload\/images\/UserImage\/0a7bc1aa9c30d717533f36194ced5fa5.jpg","url":"http:\/\/domain.test\/angelsa,u,5"},"5":{"id":5,"marker":"redIcon","name":"sponsorowana jula","lat":"18.40617210","lng":"54.56171135","photo":"upload\/images\/UserImage\/0d205f080443a779a6e5615e785a9729.jpg","url":"http:\/\/domain.test\/sponsorowana-jula,u,6"},"6":{"id":6,"marker":"redIcon","name":"ananasowy kuba\u0144ski las","lat":"18.40476347","lng":"54.56898020","photo":"upload\/images\/UserImage\/b4311e82d5966da091b9e996a7eeac78.jpg","url":"http:\/\/domain.test\/ananasowy-kubanski-las,u,7"}}

Мне нужен этот формат:

[
  {
    "id": 0,
    "marker": "greenIcon",
    "Name": "Name 01",
    "lat": "54.35070881441067",
    "lng": "18.641191756395074",
    "photo": "https://v.wpimg.pl/MjQzOTQ5YgswGDlnfk5vHnNAbT04F2FIJFh1dn56YlxlTjdgYwdiDn8NPz08UmMaPVV-Z2UMfl9pTHZifBh8UmJIfmdiAXhTfhsjMTpGLAQ1CC55NUAhATgfODcrGycaNlgy",
    "url": "http://www.mydomainm/pages/1"
  },
  {
    "id": 1,
    "marker": "greenIcon",
    "Name": "Name 02",
    "lat": "9.423300",
    "lng": "43.134600",
    "photo": "https://v.wpimg.pl/MjQzOTQ5YgswGDlnfk5vHnNAbT04F2FIJFh1dn56YlxlTjdgYwdiDn8NPz08UmMaPVV-Z2UMfl9pTHZifBh8UmJIfmdiAXhTfhsjMTpGLAQ1CC55NUAhATgfODcrGycaNlgy",
    "url": "http://www.mydomainm/pages/2"
  }
]

Как я могу изменить свой формат JSON на этот JSON назначения?

Ответы [ 4 ]

1 голос
/ 14 июня 2019

Создать массив элементов (не пар ключ-значение).

$pointsArray = [];
foreach ($points as $key => $point) {
   $element['id']  = $id = $id + 1 ;
   $element['marker']  = $icon ;
   $element['name'] = $point->name ;
   $element['lat']  = $point->lat ;
   $element['lng']  = $point->lng ;
   $element['photo'] = $point->images;
   $element['url']  = $url ;

   $pointsArray[] = $element;
}

return json_encode($pointsArray);
0 голосов
/ 14 июня 2019

Вы можете использовать Laravel Ресурс

Пример

Создание ресурса

php artisan make:resource Points

Приложение контроллера Используйте созданный вами класс ресурсов

use App\Http\Resources\Points as PointsResource;

Поместите это в свой метод

return new PointsResource($pointsArray);
0 голосов
/ 14 июня 2019
   Try this : 
        $i=0;
        foreach ($points as $key => $point) {
        $pointsArray['id'][$i]  = $id = $id + 1 ;
        $pointsArray['marker'][$i]  = $icon ;
        $pointsArray['name'][$i] = $point->name ;
        $pointsArray['lat'][$i]  = $point->lat ;
        $pointsArray['lng'][$i]  = $point->lng ;
        $pointsArray['photo'][$i] = $point->images;
        $pointsArray['url'][$i]  = $url ;
        $i++;
        }

        return json_encode($pointsArray);
0 голосов
/ 14 июня 2019

Итак, как вы сказали

foreach ($points as $key => $point) {
$pointsArray[$id]['id']  = $id = $id + 1 ;
$pointsArray[$id]['marker']  = $icon ;
$pointsArray[$id]['name'] = $point->name ;
$pointsArray[$id]['lat']  = $point->lat ;
$pointsArray[$id]['lng']  = $point->lng ;
$pointsArray[$id]['photo'] = $point->images;
$pointsArray[$id]['url']  = $url ;

}

$arrayEncoded = json_encode($pointsArray);

$decoded = (json_encode(array_values(json_decode($arrayEncoded,true))));

Итак, джосн будет выглядеть так, как вы хотите попробовать

dd($decoded);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...