Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Aiuto su creazione json con array con almeno un elemento

    ciao!

    avrei la necessità di costruire un oggetto json con questa struttura:
    codice:
    data = {
        labels: ['A','B','C'],
        datasets: [
            {
                data: [300, 50, 100],
                backgroundColor: [
                    "#42A5F5",
                    "#66BB6A",
                    "#FFA726"
                ],
                hoverBackgroundColor: [
                    "#64B5F6",
                    "#81C784",
                    "#FFB74D"
                ]
            }
        ]
    };
    nel mio file php ho fatto così:
    codice:
    $chart = array();
    $chart['labels'] = array('A', 'B', 'C');
    $chart['datasets'] = array();
    $chart['datasets']['data'] = array('300, 50, 100');
    $chart['datasets']['backgroundColor'] = array("#42A5F5", "#66BB6A", "#FFA726");
    $chart['datasets']['hoverBackgroundColor'] = array("#64B5F6", "#81C784", "#FFB74D");
    e mi esce così:
    codice:
    "data": {
        "labels": [
            "A",
            "B",
            "C"
        ],
        "datasets": {
            "data": [
                "300, 50, 100"
            ],
            "backgroundColor": [
                "#42A5F5",
                "#66BB6A",
                "#FFA726"
            ],
            "hoverBackgroundColor": [
                "#64B5F6",
                "#81C784",
                "#FFB74D"
            ]
        }
    }
    il problema è datasets, nel senso che l'originale ha cmq la struttura di un array con un solo record.
    php invece, trovando un solo record, me lo invia come oggetto.

    come posso ottenere lo stesso risultato??

  2. #2
    se ho capito bene sbagli qui, devi scrivere

    $chart['datasets']['data'] = array(300, 50, 100);

    e non

    $chart['datasets']['data'] = array('300, 50, 100');

  3. #3
    ciao!

    intanto grazie perchè quello era già un errore di cui non mi ero accorto!

    cmq il problema è un altro.
    ti faccio un esempio più "compatto".
    l'esempio di codice è questo:
    codice:
    labels: ['A','B','C'],
        datasets: [ --> PARENTESI QUADRA CHE IDENTIFICA UN ARRAY
            {
               .......
            }
        ]
    io invece ottengo questo:
    codice:
    labels: ['A','B','C'],
        datasets: { --> DIRETTAMENTE UN OGGETTO, SENZA L'ARRAY
               .......
        }
    il motivo penso dipenda dal fatto che in verità ci sarebbe un array con un solo oggetto, e quindi php lo "appiattosce".

  4. #4
    $JSONchart = json_encode($chart);
    ARTRIPE

  5. #5
    ho risolto cambiando un pò la logica:
    codice:
    $chart = array();
    $chart['labels'] = array('A', 'B', 'C');
    $datasets = array(
        'data' => array(10, 50, 100),
        'backgroundColor' => array("#42A5F5", "#66BB6A", "#FFA726"),
        'hoverBackgroundColor' => array("#64B5F6", "#81C784", "#FFB74D")
    );
    $chart['datasets'][] = $datasets;

  6. #6
    Quote Originariamente inviata da optime Visualizza il messaggio
    $JSONchart = json_encode($chart);
    ciao!

    si quello lo faccio più iin fondo!
    ma il problema non era quello.
    grazie cmq!

  7. #7
    perchè le chiavi "data", "backgroundColor" e "hoverBackgroundColor" non devono essere all'interno di datasets, che altrimenti diventa un array associativo.

    datasets lo devi trattare come un array non associativo e le chiavi in realtà fanno parte del primo elemento dell'array datasets


    codice:
    $chart['datasets'] = array();
    $chart['datasets'][0] = [];
    $chart['datasets'][0]['data'] = array('300, 50, 100');
    $chart['datasets'][0]['backgroundColor'] = array("#42A5F5", "#66BB6A", "#FFA726");
    $chart['datasets'][0]['hoverBackgroundColor'] = array("#64B5F6", "#81C784", "#FFB74D");

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    180
    È oggetto Javascript, la conversione in json
    Codice PHP:
    <?php

    $string 
    "{
        \"labels\": [\"A\",\"B\",\"C\"],
        \"datasets\": [
            {
                \"data\": [300, 50, 100],
                \"backgroundColor\": [
                    \"#42A5F5\",
                    \"#66BB6A\",
                    \"#FFA726\"
                ],
                \"hoverBackgroundColor\": [
                    \"#64B5F6\",
                    \"#81C784\",
                    \"#FFB74D\"
                ]
            }
        ]
    }"
    ;
    $json json_decode($string);
    $myarrobj $json->datasets;
    var_dump($json$myarrobj$myarrobj[0]->data
    );
    Il var_dump mostra la struttura.
    Ultima modifica di darbula; 24-01-2023 a 17:11

  9. #9
    Quote Originariamente inviata da darbula Visualizza il messaggio
    È oggetto Javascript, la conversione in json
    Codice PHP:
    <?php

    $string 
    "{
        \"labels\": [\"A\",\"B\",\"C\"],
        \"datasets\": [
            {
                \"data\": [300, 50, 100],
                \"backgroundColor\": [
                    \"#42A5F5\",
                    \"#66BB6A\",
                    \"#FFA726\"
                ],
                \"hoverBackgroundColor\": [
                    \"#64B5F6\",
                    \"#81C784\",
                    \"#FFB74D\"
                ]
            }
        ]
    }"
    ;
    $json json_decode($string);
    $myarrobj $json->datasets;
    var_dump($json$myarrobj$myarrobj[0]->data
    );
    Il var_dump mostra la struttura.
    ciao!

    si si la conversione in json la facevo.
    il problema era un altro.
    ho messo la soluzione sopra!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2023 vBulletin Solutions, Inc. All rights reserved.