为什么这是Google Charts的无效JSON字符串

时间:2014-11-01 15:02:07

标签: javascript json google-visualization

我尝试使用以下JavaScript创建Google Chart(表格图表):

<script>
    function drawChart() {
        var options = {
            width: 700
        };

        $.getJSON('/LifeListComparison/GetComparison', null, function (jsonData) {
        }).success(function (jsonData) {
            data = new google.visualization.DataTable(jsonData);
            chart = new google.visualization.Table(document.getElementById('GoogleTable'));
            chart.draw(data, options);
        }).fail(function (jqXHR, textStatus, errorThrown) {
            alert('Error: ' + textStatus + ' ' + errorThrown);
        });
    }

    google.load('visualization', '1.0', {
        'packages': ['table'],
        'callback': drawChart
    });

</script>

JS代码工作正常,成功函数被调用。但是,Google Charts告诉我从C#服务方法返回的JSON无效。 JSON如下:

{
    "cols": [
        {"type": "string" ,"label": "Common Name" }, 
        {"type": "string" ,"label": "Scientific Name" }, 
        {"type": "number" ,"label": "Sort Order" }, 
        {"type": "number" ,"label": "Period 1" }, 
        {"type": "number" ,"label": "Period 2" }, 
        {"type": "number" ,"label": "Period 3" }, 
        {"type": "number" ,"label": "Period 4" }, 
        {"type": "number" ,"label": "Period 5" }
        ], 
    "rows" : [
        {"c" : [{"v": "American Coot"}, {"v": "Fulica americana"}, {"v": 3615}, {"v": True}, {"v": True}, {"v": False}, {"v": False}, {"v": False}]}, 
        {"c" : [{"v": "American Crow"}, {"v": "Corvus brachyrhynchos"}, {"v": 19073}, {"v": True}, {"v": False}, {"v": False}, {"v": False}, {"v": False}]}
        ]
}

JSON对我来说看起来非常有效,所以我必须忽略一些东西。

2 个答案:

答案 0 :(得分:1)

JavaScript区分大小写,“v”的值必须小写truefalse,而不是现在的TrueFalse。您是否在C#中手动序列化JSON? JSONLint是你的朋友。

答案 1 :(得分:1)

只需使用JSON验证工具,例如http://jsonlint.com/ ......它必须比尝试发现错误更快。

布尔应该小一些。

Parse error on line 49:
...               "v": True               
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['