JSON formatting created in PHP

Asked

Viewed 317 times

1

I am creating a JSON that needs a specific formatting in PHP, the problem is that I can’t make it look like my JSON template, follow template and my PHP:

Model:

{
  "success":true,
  "message":"",
  "data":
  {
        "id": "lojas_monitoradas",
        "name": "lojas monitoradas",
        "data": {
          "total":1
        },
        "children":[
        {
          "id": "gondolas_monitoradas",
          "name": "gôndolas monitoradas",
          "data": {
            "total":7
          },
          "children":[
          {
            "id": "produtos_total",
            "name": "produtos",
            "data": {
              "total":750
            },
            "children":[
              {
                "id": "produtos_encontrados",
                "name": "produtos encontrados",
                "data": {
                  "total":500,
                  "percentual":0.66
                }
              },
              {
                "id": "produtos_em_ruptura",
                "name": "produtos em ruptura",
                "data": {
                  "total":200,
                  "percentual":0.33
                },
                "children":[



                ]
              }


            ]
          }
          ]
      }
    ]
  }
}

PHP:

    $json = array("id" => "lojas_monitoradas",
            "name" => "lojas monitoradas",
            "data" => array("total" => $lojas),
            "children" => array(
                "id" => "gondolas_monitoradas",
                "name" => "gôndolas monitoradas",
                "data" => array("total" => $gondolas),
                    "children" => array([
                        "id" => "produtos",
                        "name" => "produtos",
                        "data" => array("total" => $produtos_total),
                        "children" => array([
                            array(
                                "id" => "produtos_encontrados",
                                "name" => "produtos encontrados",
                                "data" => array("total" => $produtos_encontrados, "percentual" => $produtos_encontrados_percentual)
                            ),
                            array(
                                "id" => "produtos_em_ruptura",
                                "name" => "produtos em ruptura",
                                "data" => array("total" => $produtos_em_ruptura, "percentual" => $produtos_em_ruptura_percentual)
                            ),
                            "children" => array([
                                array(
                                    "id" => "produtos_em_ruptura_sistemica",
                                    "name" => "produtos em ruptura sistemica",
                                    "data" => array("total" => $produtos_em_ruptura_sistemica, "percentual" => $produtos_em_ruptura_sistemica_percentual)
                                ),
                                array(
                                    "id" => "produtos_em_ruptura_gondola",
                                    "name" => "produtos em ruptura na gondola",
                                    "data" => array("total" => $produtos_em_ruptura_gondola, "percentual" => $produtos_em_ruptura_gondola_percentual)
                                ),
                                "children" => array([
                                    array(
                                        "id" => "produtos_resolvidos",
                                        "name" => "produtos resolvidos",
                                        "data" => array("total" => $produtos_resolvidos, "percentual" => $produtos_resolvidos_percentual)
                                    ),
                                    array(
                                        "id" => "produtos_aindanaotratados",
                                        "name" => "produtos ainda não tratados",
                                        "data" => array("total" => $produtos_nao_tratados, "percentual" => $produtos_nao_tratados_percentual)
                                    ),
                                    array(
                                        "id" => "produtos_em_transicao",
                                        "name" => "produtos em transição",
                                        "data" => array("total" => $produtos_em_transicao, "percentual" => $produtos_em_transicao_percentual)
                                    ),
                                    "children" => array([
                                        array(
                                            "id" => "produtos_estoquevirtual",
                                            "name" => "produtos com estoque virtual ajustado",
                                            "data" => array("total" => $produtos_estoquevirtual, "percentual" => $produtos_estoquevirtual_percentual)
                                        ),
                                        array(
                                            "id" => "produtos_abastecido",
                                            "name" => "produtos abastecidos",
                                            "data" => array("total" => $produtos_abastecido, "percentual" => $produtos_abastecido_percentual)
                                        ),
                                        array(
                                            "id" => "produtos_alarmefalso",
                                            "name" => "produtos com alarme falso",
                                            "data" => array("total" => $produtos_alarmefalso, "percentual" => $produtos_alarmefalso_percentual)
                                        ),
                                    ]),
                                ]),
                            ]),
                        ]),
                    ]),
                ));

Return of my PHP:

{
   "success":true,
   "message":"",
   "data":
        "id": "lojas_monitoradas",
        "name": "lojas monitoradas",
        "data": {
            "total": 1
        },
        "children": {
            "id": "gondolas_monitoradas",
            "name": "gôndolas monitoradas",
            "data": {
                "total": 7
            },
            "children": [
                {
                    "id": "produtos",
                    "name": "produtos",
                    "data": {
                        "total": 779
                    },
                    "children": [
                        {
                            "0": {
                                "id": "produtos_encontrados",
                                "name": "produtos encontrados",
                                "data": {
                                    "total": 254,
                                    "percentual": 0.32605905006418
                                }
                            },
                            "1": {
                                "id": "produtos_em_ruptura",
                                "name": "produtos em ruptura",
                                "data": {
                                    "total": 525,
                                    "percentual": 0.67394094993582
                                }
                            },
                            "children": [
                                {
                                    "0": {
                                        "id": "produtos_em_ruptura_sistemica",
                                        "name": "produtos em ruptura sistemica",
                                        "data": {
                                            "total": 99,
                                            "percentual": 0.12708600770218
                                        }
                                    },
                                    "1": {
                                        "id": "produtos_em_ruptura_gondola",
                                        "name": "produtos em ruptura na gondola",
                                        "data": {
                                            "total": 426,
                                            "percentual": 0.54685494223363
                                        }
                                    },
                                    "children": [
                                        {
                                            "0": {
                                                "id": "produtos_resolvidos",
                                                "name": "produtos resolvidos",
                                                "data": {
                                                    "total": 0,
                                                    "percentual": 0
                                                }
                                            },
                                            "1": {
                                                "id": "produtos_aindanaotratados",
                                                "name": "produtos ainda não tratados",
                                                "data": {
                                                    "total": 0,
                                                    "percentual": 0
                                                }
                                            },
                                            "2": {
                                                "id": "produtos_em_transicao",
                                                "name": "produtos em transição",
                                                "data": {
                                                    "total": 0,
                                                    "percentual": 0
                                                }
                                            },
                                            "children": [
                                                [
                                                    {
                                                        "id": "produtos_estoquevirtual",
                                                        "name": "produtos com estoque virtual ajustado",
                                                        "data": {
                                                            "total": 6,
                                                            "percentual": 0.0077021822849807
                                                        }
                                                    },
                                                    {
                                                        "id": "produtos_abastecido",
                                                        "name": "produtos abastecidos",
                                                        "data": {
                                                            "total": 11,
                                                            "percentual": 0.014120667522465
                                                        }
                                                    },
                                                    {
                                                        "id": "produtos_alarmefalso",
                                                        "name": "produtos com alarme falso",
                                                        "data": {
                                                            "total": 4,
                                                            "percentual": 0.0051347881899872
                                                        }
                                                    }
                                                ]
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
}

Note that on my return from PHP it before Children is as associative array and precise that the return is equal in the model, can help me ?

  • In case converting json to a PHP array would help you? Because PHP already has the function to convert json to array and PHP array to json.

1 answer

2

Your array will be:

array (
  'success' => true,
  'message' => '',
  'data' => 
  array (
    'id' => 'lojas_monitoradas',
    'name' => 'lojas monitoradas',
    'data' => 
    array (
      'total' => 1,
    ),
    'children' => 
    array (
      0 => 
      array (
        'id' => 'gondolas_monitoradas',
        'name' => 'gôndolas monitoradas',
        'data' => 
        array (
          'total' => 7,
        ),
        'children' => 
        array (
          0 => 
          array (
            'id' => 'produtos_total',
            'name' => 'produtos',
            'data' => 
            array (
              'total' => 750,
            ),
            'children' => 
            array (
              0 => 
              array (
                'id' => 'produtos_encontrados',
                'name' => 'produtos encontrados',
                'data' => 
                array (
                  'total' => 500,
                  'percentual' => 0.66,
                ),
              ),
              1 => 
              array (
                'id' => 'produtos_em_ruptura',
                'name' => 'produtos em ruptura',
                'data' => 
                array (
                  'total' => 200,
                  'percentual' => 0.33,
                ),
                'children' => 
                array (
                ),
              ),
            ),
          ),
        ),
      ),
    ),
  ),
)

Use this site to convert if you want to optimize these conversions: https://wtools.io/convert-json-to-php-array

In php if you have an array and want to convert it to json you use function json_encode passing the array as parameter. If you wish otherwise, convert from json to array, you use the function json_decode passing as parameter the string json and also the parameter TRUE.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.