too long

I am creating with PHP some JSON-data that seems to be invalid. I'm trying to integrate the google API in my code.

<?php
$con=mysql_connect("localhost","root","") or die("Failed to connect with database!!!!");
mysql_select_db("mobiledb", $con); 
// The Chart table contains two fields: weekly_task and percentage
// This example will display a pie chart. If you need other charts such as a Bar chart, you will need to modify the code a little to make it work with bar chart and other charts
$sth = mysql_query("SELECT `id`, `Q1`, `Q2` FROM `table2` WHERE `id`=8710058770");
/*
---------------------------
example data: Table (Chart)
--------------------------
weekly_task     percentage  marks
Sleep           30          60
Watching Movie  40          80
work            44          90
*/
$rows = array();
//flag is not needed
$flag = true;
$table = array();
$table['cols'] = array(
    // Labels for your chart, these represent the column titles
    // Note that one column is in "string" format and another one is in "number" format as pie chart only required "numbers" for calculating percentage and string will be used for column title
    array('label' => 'id', 'type' => 'string'),
    array('label' => 'Q1', 'type' => 'number'),
    array('label' => 'Q2', 'type' => 'number')
);
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $temp = array();
    // the following line will be used to slice the Pie chart
    $temp[] = array('v' => (string) $r['id']);
    // Values of each slice
    $temp[] = array('v' => (int) $r['Q1'], 'f' => (int) $r['Q2']);
    $rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
echo $jsonTable;
?>

MY Json Output And check in http://jsonlint.com/

   {
cols: [
{
label: "id",
type: "string"
},
{
label: "Q1",
type: "number"
},
{
label: "Q2",
type: "number"
}
],
rows: [
{
c: [
{
v: "8710058770"
},
{
v: 35,
f: 40
}
]
},
{
c: [
{
v: "8710058770"
},
{
v: 60,
f: 70
}
]
},
{
c: [
{
v: "8710058770"
},
{
v: 75,
f: 85
}
]
}
]
}

And the error I could see when I validate Parse error on line 1: { cols: [ {
-----^ Expecting 'STRING', '}'

print_r($table) output

Array
(
    [cols] => Array
        (
            [0] => Array
                (
                    [label] => id
                    [type] => string
                )

            [1] => Array
                (
                    [label] => Q1
                    [type] => number
                )

            [2] => Array
                (
                    [label] => Q2
                    [type] => number
                )

        )

    [rows] => Array
        (
            [0] => Array
                (
                    [c] => Array
                        (
                            [0] => Array
                                (
                                    [v] => 8710058770
                                )

                            [1] => Array
                                (
                                    [v] => 35
                                )

                            [2] => Array
                                (
                                    [v] => 40
                                )

                        )

                )

            [1] => Array
                (
                    [c] => Array
                        (
                            [0] => Array
                                (
                                    [v] => 8710058770
                                )

                            [1] => Array
                                (
                                    [v] => 60
                                )

                            [2] => Array
                                (
                                    [v] => 70
                                )

                        )

                )

            [2] => Array
                (
                    [c] => Array
                        (
                            [0] => Array
                                (
                                    [v] => 8710058770
                                )

                            [1] => Array
                                (
                                    [v] => 75
                                )

                            [2] => Array
                                (
                                    [v] => 85
                                )

                        )

                )

        )

)
{"cols":[{"label":"id","type":"string"},{"label":"Q1","type":"number"},{"label":"Q2","type":"number"}],"rows":[{"c":[{"v":"8710058770"},{"v":35},{"v":40}]},{"c":[{"v":"8710058770"},{"v":60},{"v":70}]},{"c":[{"v":"8710058770"},{"v":75},{"v":85}]}]}

you have some empty space at the beginning of your php file before <?php this can cause the output to be miss interpreted. also ensure you have

header("Content-Type: application/json");

before you echo the json.

Actually the issue is due to string values don't have quotes. result should be

{
"cols": [{
    "label": "id",
    "type": "string"
},
{
    "label": "Q1",
    "type": "number"
},
{
    "label": "Q2",
    "type": "number"
}],
"rows": [{
    "c": [{
        "v": "8710058770"
    },
    {
        "v": 35,
        "f": 40
    }]
},
{
    "c": [{
        "v": "8710058770"
    },
    {
        "v": 60,
        "f": 70
    }]
},
{
    "c": [{
        "v": "8710058770"
    },
    {
        "v": 75,
        "f": 85
    }]
}]

}

Because your key are not enclosed in quotes this is giving error.

Now the problem is why it is not in quotes while it should be.

  • Please provide print_r($table) then i can check what is the issue .