1

無効と思われる JSON データを PHP で作成しています。コードに Google API を統合しようとしています。

<?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 出力およびチェックイン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
}
]
}
]
}

そして、 1 行目の解析エラーを検証すると表示されるエラー: { cols: [ {
-----^ Expecting 'STRING', '}'

print_r($table) 出力

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}]}]}
4

2 に答える 2

0

実際の問題は、文字列値に引用符がないことが原因です。結果は

{
"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
    }]
}]

}

キーが引用符で囲まれていないため、エラーが発生しています。

問題は、引用符で囲まれているはずなのに、引用符で囲まれていない理由です。

  • print_r($table) を提供してください。問題を確認できます。
于 2013-07-25T08:42:34.317 に答える