繁体   English   中英

在php / laravel中更改json格式

[英]Change json format in php/laravel

我有以下代码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?

制作一个元素数组(不是键值对)。

$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);

如你所说

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))));

因此,Josn会看起来像您想要尝试的

dd($decoded);
   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);

您可以使用Laravel 资源

创建资源

php artisan make:resource Points

控制器应用程序使用您创建的资源类

use App\Http\Resources\Points as PointsResource;

把这个放在你的方法上

return new PointsResource($pointsArray);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM